我的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);
相同的结果。
我没有看到我的错误。
答案 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];
}