如何使用正则表达式删除文件的路径

时间:2014-07-22 06:55:21

标签: php regex

我的PHP代码有点问题。

我有一个这样的数组:var_dump($array);

array(10) {
    [0]=> string(69) "/omd/sites/test/etc/icinga/conf.d/objects/Testrechner/Ethernetbox2.cfg"
    [1]=> string(70) "/omd/sites/test/etc/icinga/conf.d/objects/Testrechner/Ethernetbox1.cfg"
    [2]=> string(68) "/omd/sites/test/etc/icinga/conf.d/objects/Testrechner/test-esx-1.cfg"
    [3]=> string(83) "/omd/sites/test/etc/icinga/conf.d/objects/Testrechner/station-1/sw-disc-test2_11.cfg"
}

我想只提取文件名:

"sw-disc-test2_11.cfg"

我尝试过以下方法:

<?PHP

foreach($array as $key => $value) {

    $regex = "#^/omd/[/w\-/]*/$#";
    $replace = '';
    $array[$key] = preg_replace($regex,$replace,$value);
    $array_new = array_map('trim', $array);
    $array_new = array_merge($array_new);

}

var_dump($array_new);

?>

使用vardump($array_new),我得到与var_dump($array);相同的结果。

我没有看到我的错误。

3 个答案:

答案 0 :(得分:2)

您可以像这样使用 basename

$array_new = array();
foreach($array as $key => $value)
{
    $array_new[] = basename($value);
}

 var_dump($array_new);

答案 1 :(得分:1)

$array_old = array(); // your array
$array_new = array(); // new empty array
foreach($array_old as $v){
    $explode = explode('/', $v);
    $array_new[] = end($explode); // here is file name
}

答案 2 :(得分:0)

完成后,这是使用正则表达式执行此操作的一种方法:

$regex = '~/\K[^/]+$~';
// for loop...
  if (preg_match($regex, $yourstring, $value)) {
        $array[$key] = $m[0];
     }