如何删除破折号除了最后一个破折号文件基本名称和显示使用PHP?

时间:2015-01-22 13:14:01

标签: php

  • 我的目标很简单,我的网址为$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 - 我的意思是最后一个破折号后的空格。那该怎么办?

2 个答案:

答案 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);

这有效地应用了两个正则表达式;第一个用短划线+空格替换每个短划线,第二个删除后跟其他短划线的所有短划线。