標籤:

PHP glob 遍歷 Windows 系統中文件名含有 Unicode BMP 外字元的問題

一直都是用這種方法來列文件:

$folderpath = mb_convert_encoding(C:/某個目錄/, GB18030, UTF-8);nnforeach(glob($folderpath.*) as $filename) {nt$filename = mb_convert_encoding($filename, UTF-8, GB18030);nt$filename = pathinfo($filename, PATHINFO_BASENAME);nntecho $filename."rn";n}n

剛剛發現列出的文件數量比目錄中的實際文件數量少, 檢查了一下發現是缺少了文件名中含有 CJK ExtA 和 ExtB 字元的文件.

於是換用了 readdir 方法:

$folderpath = mb_convert_encoding(C:/某個目錄/, GB18030, UTF-8);nnif($handle = opendir($folderpath)) {ntwhile(false !== ($filename = readdir($handle))) {nttif($filename === . || $filename === ..) {ntttcontinue;ntt}ntt$filename = mb_convert_encoding($filename, UTF-8, GB18030);nnttecho $filename."rn";nt}ntclosedir($handle);n}n

列出的數量就正常了. 很奇怪.


推薦閱讀:

Python 使用 list 作為函數參數時,參數是否會初始化?
把代碼寫的太靈活不好嗎?為什麼會被上司批評?
k-近鄰演算法實現手寫數字識別系統——《機器學習實戰》
什麼是 Agile Software Development(敏捷軟體開發)?

TAG:PHP | 编码 | 编程 |