$url = 'example.com/bla-tla-bla.xyz';
basename($url)
的输出为bla-tla-bla.xyz
。str_replace('-', ' ', basename($url))
我得bla tla bla.xyz
。
但我的目标有点不同。我想要bla tla-bla.xyz
。bla tla- bla.xyz
- 我的意思是最后一个破折号后的空格。那该怎么办?答案 0 :(得分:5)
很多方式之一...
$rev = strrev(basename($url));
$bits = explode('-',$rev,2);
if (!empty($bits[1]))
$bits[1] = str_replace('-', ' ', $bits[1]);
$result = strrev(implode("-",$bits));
利用explode()的限制参数的迂回方式。
答案 1 :(得分:0)
以下是使用单个表达式:
的方法$source = 'bla-tla-bla.xyz';
$result = preg_replace(array('/-/', '/-(?=.*-)/'), array('- ', ''), $source);
这有效地应用了两个正则表达式;第一个用短划线+空格替换每个短划线,第二个删除不后跟其他短划线的所有短划线。