2016-08-24 2 views
1

私はディレクトリを持っており、そのディレクトリ内のすべてのファイルのファイル名の一部だけを取得したいと考えています。例えばディレクトリ内の各ファイル名の一部を取得

私は、次のファイルとディレクトリを持っている場合は、:

file_a1.php 
file_b2.php 
file_c3.php 

私は、ディレクトリ内のファイルから... ...

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

配列を取得したいです。

は、現在、私のようなグロブ()を使用しています:

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

次に、配列内の各値をループし、ストリッピング「/ディレクトリ/ _ファイルタイプを」の端部からのスタートと「の.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

関連する問題