【发布时间】:2015-03-24 12:51:47
【问题描述】:
我有一个文件浏览器,我正在尝试查找哪些文件名包含给定的查询。代码如下:
$query = (isset($_POST['s']))? mb_strtolower($_POST['s'],'UTF-8') : '';
$res = opendir($dir);
while(false!== ($file = readdir($res))) {
if(mb_strpos(mb_strtolower($file,'UTF-8'),mb_strtolower($query,'UTF-8'),0,'UTF-8')!== false) {
echo $file;
}}
对于英语单词这很好,但是当文本是希腊语时,结果并不像预期的那样,这意味着它适用于某些但不是所有希腊语单词。有人可以帮我解决这个问题吗?
【问题讨论】:
-
"但是当 query 是希腊语时" - 这告诉我你正在使用数据库。在查询之前尝试将 UTF-8 传递给您的连接,if 就是这种情况。看到这个页面stackoverflow.com/questions/279170/utf-8-all-the-way-through
-
我没有使用数据库,查询是用户输入搜索的文本。
-
文件名通常不存储为 UTF-8。它在很大程度上取决于底层文件系统。使用非 ASCII 文件名非常痛苦。