2017-10-14 82 views
0

我需要使用名稱中帶有重音符號的文件。不幸的是,它看起來像GLOB忽略這些文件。我已創建爲示範此短代碼:PHP 7 glob忽略帶重音符名稱的文件

$files = glob(dirname(__FILE__) . "/data/tracks/167/*.*"); 

foreach($files as $file) { 
    var_dump($file); 
    var_dump(file_exists($file)); 
} 

輸出是:

D:\data\zdroje\Kombinovane\MotoQuest\Web\admin\pokus.php:13:string 'D:\data\zdroje\Kombinovane\MotoQuest\Web\admin/data/tracks/167/162_P1030721 (kopie).jpg' (length=87) 
D:\data\zdroje\Kombinovane\MotoQuest\Web\admin\pokus.php:14:boolean true 
D:\data\zdroje\Kombinovane\MotoQuest\Web\admin\pokus.php:13:string 'D:\data\zdroje\Kombinovane\MotoQuest\Web\admin/data/tracks/167/162_tn_P1030721 (kopie).jpg' (length=90) 
D:\data\zdroje\Kombinovane\MotoQuest\Web\admin\pokus.php:14:boolean true 
D:\data\zdroje\Kombinovane\MotoQuest\Web\admin\pokus.php:13:string 'D:\data\zdroje\Kombinovane\MotoQuest\Web\admin/data/tracks/167/1_1493222210_P1030721.jpg' (length=88) 
D:\data\zdroje\Kombinovane\MotoQuest\Web\admin\pokus.php:14:boolean true 
D:\data\zdroje\Kombinovane\MotoQuest\Web\admin\pokus.php:13:string 'D:\data\zdroje\Kombinovane\MotoQuest\Web\admin/data/tracks/167/1_1493222210_tn_P1030721.jpg' (length=91) 
D:\data\zdroje\Kombinovane\MotoQuest\Web\admin\pokus.php:14:boolean true 

我的目錄包含6個文件 - 2重音字符被忽略:

enter image description here

即使在使用這裏列出的提示時,file_exists也是如此 - PHP file_exists with accent returns false

其中一個文件名是:

1_1493385948_tn_22-Ještěd21.jpeg

什麼想法,有什麼不對?

+0

你可以複製該文件名到描述中,我的第一次嘗試獲得相同的行爲失敗(我使用strtwô,這工作) – sics

+0

添加文件名。謝謝。 – user3523426

回答

0

道歉,沒有足夠的代表評論。 你能告訴我你從獲得:

var_dump(iconv_get_encoding()); 

又有怎樣:

$files = scandir(dirname(__FILE__) . "/data/tracks/167/"); 
var_dump($files); 

你可以使用:

<?php 
$files = array_filter( 
    scandir(dirname(__FILE__)), function($file_or_folder) { 
     return !is_dir(dirname(__FILE__) . $file_or_folder); 
    } 
); 
var_dump($files); 
?> 

而是水珠的?

+0

我得到︰array(size = 3) 'input_encoding'=> string'UTF-8'(length = 5) 'output_encoding'=> string'UTF-8'(length = 5) 'internal_encoding'=>字符串'UTF-8'(長度= 5) – user3523426

+0

這就是我所得到的,所以不是一個編碼問題... 請注意,與JPG相對的擴展名JPEG對於重音文件名也是不同的... 順便說一下你的代碼在我的系統上工作。 – Erik

+0

因爲我使用*。*作爲GLOB命令,所以應該沒有區別。我只是將JPEG重命名爲JPG,結果是一樣的....可能它與操作系統代碼頁有關 - 我使用Windows 10 64位代碼頁1250.另一方面,對於PHP應該沒有關係。 – user3523426