scandir issue with accents in Linux work fine in OSX

夙愿已清 提交于 2019-12-25 06:32:28

问题


Hi im using the next function to create a tree directory menu in my website, the directories include a lot of pdf and excel, sometimes the name of this files have accents, spaces and ñ, My application work perfectly in OSX (mac) but a soon I uploaded in my godaddy server (linux), all the characters with accent were replace by the ? character breaking all the names and the link. Do you know how to deal with this issue? I been reading about urlencode, urlrawencode, inclusive I read, this comment in the php documentation site as comment:

Scandir does not work properly with non-english caracters (like french accents for example : éàçè...) in the files name. As PHP does not support unicode operations until PHP 6, this is not a bug.

I hope somebody can help me in solve this.

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>';
}

回答1:


The answer simple is linux dont accept accents, so is impossible to use scandir in linux server right now if you want accents on it, thats why in OSX work and also in Windows. I changed my script at the end.



来源:https://stackoverflow.com/questions/23601314/scandir-issue-with-accents-in-linux-work-fine-in-osx

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!