2016-08-24 75 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”上循环阵列中的每个值和剥离“/目录/ _文件”每个字符串。当然有更好的方法来做到这一点?除了我一直在做的或使用正则表达式来选择我想要的。

谢谢!

回答

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

相关问题