2017-10-14 9 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)); 
} 

출력은 다음과 같습니다 : - 무시됩니다 :

enter image description here

악센트 문자로 2

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 개) 파일이 들어 나는 데모에 대한이 짧은 코드를 만들었습니다

동일하게 여기에 나열된 힌트 - PHP file_exists with accent returns false을 사용할 때도 file_exists와 같습니다. 파일 이름의

하나는 :

1_1493385948_tn_22-Ještěd21.jpeg

어떤 생각, 어떤 잘못?

+0

설명에 해당 파일 이름을 복사 할 수 있습니까? 동일한 동작을 얻으려고 시도한 첫 번째 시도가 실패했습니다. str twô를 사용했는데이 문제가 발생했습니다. – 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

배열 '(크기 = 3) 'input_encoding '=> 문자열'UTF-8 '(길이 = 5) 'output_encoding '=> 문자열'UTF-8 '(길이 = 5) 'internal_encoding '=> 문자열 'UTF-8'(길이 = 5) – user3523426

+0

인코딩 문제가 아니라 내가 얻는 것입니다 ... JPG와 반대되는 확장자 JPEG는 악센트 부호가있는 파일 이름에도 다릅니다 ... BTW 귀하의 코드가 내 시스템에서 작동합니다. – Erik

+0

GLOB 명령에 *. *을 사용할 때 차이가 없어야합니다. JPG로 JPG의 이름을 변경했는데 그 결과는 동일합니다 ... 아마 OS 코드 페이지와 관련이 있습니다 - Windows 10 64 비트 코드 페이지 1250을 사용합니다. 반면에 PHP는 중요하지 않습니다. – user3523426