2016-08-24 2 views
1

디렉토리가 있고 해당 디렉토리에있는 모든 파일의 파일 이름 부분 만 가져 오려고합니다. 예를 들어디렉토리의 각 파일 이름 부분 얻기

, 나는 다음과 같은 파일과 디렉토리가있는 경우 :

file_a1.php 
file_b2.php 
file_c3.php 

내가 배열을 얻으려면 ... 디렉토리에있는 파일에서

Array 
(
    [0] => a1 
    [1] => b2 
    [2] => c3 
) 

...

.

현재 I 같은 글로브()를 사용하고 :

$files = glob(__DIR__ . '/directory/file_*.php'); 

그런 배열의 각각의 값에 대한 반복 및 스트리핑 '/ 디렉토리/file_을'의 끝에서 시작하고 ".PHP '로부터 각 문자열. 분명히 이것을 할 수있는 더 좋은 방법이 있습니까? 내가 뭘했는지 또는 Regex를 사용하여 내가 원하는 것을 선택하는 것.

감사합니다.

답변

1

당신은 str_replace을 사용할 수

$files = array(
     __DIR__ . '/directory/file_a1.php', 
     __DIR__ . '/directory/file_a2.php', 
     __DIR__ . '/directory/file_a3.php'); 
$new_files = array(); 

foreach ($files as $file) { 
    $new_files[] = str_replace(array(__DIR__ . '/directory/file_', '.php'), '', $file); 
} 

var_dump($new_files); 

결과 :

이 정확히 내가 지금 그것을하고 있어요 어떻게
array (size=3) 
    0 => string 'a1' (length=2) 
    1 => string 'a2' (length=2) 
    2 => string 'a3' (length=2) 
+0

이) 보이는을 더 나은 방법이되지 않을 수도 있습니다처럼 ... – Enstage

+0

[preg_match] (http://php.net/manual/en/function.preg-match.php)와 함께 정규 표현식을 사용할 수도 있지만 성능이 더 좋아질 지 모르겠습니다. 나는 당신과 비슷한 코드 덩어리를 가지고 있고, 나는 str_replace를 사용한다. – roberto06