我正在使用下一个函数在我的网站上创建一个树目录菜单,目录包含很多pdf和excel,有时这个文件的名称有重音符号,空格和ñ,我的应用程序在OSX中完美运行(mac )但很快我上传到我的godaddy服务器(linux),所有带重音的字符都被?
字符替换,打破了所有名称和链接。你知道如何处理这个问题吗?我一直在阅读有关urlencode,urlrawencode,包含我阅读,这篇评论在php文档网站上的评论:
Scandir无法正常使用非英语字符(如法语) 重音例如:éàçè...)在文件名中。因为PHP没有 支持unicode操作直到PHP 6,这不是一个bug。
我希望有人可以帮我解决这个问题。
function listFolderFiles($dir){
$ffs = scandir($dir);
echo '<ul class="transparencia">';
foreach($ffs as $ff){
if($ff != '.' && $ff != '..' && $ff != '.DS_Store'){
$stringFileDir = $dir.'/'.$ff;
echo '<li>';
if(is_file($stringFileDir)){
echo "<a href='transparencia/".$dir.'/'.$ff."' data-type='".pathinfo($stringFileDir)['extension']."' target='_blank'>".$ff."</a>";
}else{
echo "<span class='more'>+</span>".urldecode($ff);
}
if(is_dir($dir.'/'.$ff)){
listFolderFiles($dir.'/'.$ff);
}
echo '</li>';
}
}
echo '</ul>';
}
答案 0 :(得分:0)
答案很简单就是linux不接受重音,所以如果你想在它上面使用重音,就不可能在linux服务器上使用scandir,这就是OSX工作和Windows中的原因。我最后改了我的剧本。