preg_replace使用不同的字符串进行条件替换

时间:2010-10-19 09:10:02

标签: php regex preg-replace

我知道在正则表达式的匹配中有一个if / then,但在替换中是否有一个?

即。我想做一个正则表达式

  

“我有低于5美元出售的Foo酒吧”是“Foo Bars~ $ 5”

     

“我有Foo酒吧出售”成为“Foo Bars”而不是“Foo Bars~”

目前我的表达方式有点像这样:

preg_replace("/(([A-Z][a-z]*\s){1,3})((under .)\d+)?/","$1~$4",$str);

(当然还有其他位删除其他文本!) 但这包括〜即使其中没​​有“欠”。

我可能会使用preg_replace_callback,但这似乎有点OTT

感谢。

1 个答案:

答案 0 :(得分:2)

Php的修剪功能可以:

// Before: "Foo Bars~$5"
    $str = trim($str,'~');
// After: "Foo Bars~$5"

// Before: "Foo Bars~"
$str = trim($str,'~');
// After: "Foo Bars"