2010-10-19 82 views
2

我知道在正則表達式的匹配中有一個if/then,但是在替換中有一個if/then嗎?preg_replace不同字符串的條件替換

即。我想在一個正則表達式

做「我有以下5 $出售富酒吧」是「富酒吧〜$ 5」

「我要出售的富酒吧」成爲「富酒吧」和NOT「富酒吧〜」

我有一個表情有點像這樣的時刻:

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

(與其他位,除去當然其他文本藏漢!) 但塔t包括〜即使當它沒有'under'時。

我大概可以使用preg_replace_callback但似乎有點OTT

感謝。

+0

爲什麼比不上PHP中的字符串,然後對他們有不同的preg_replace表達?我不明白你爲什麼要尋找一種複雜的方法來解決一個簡單的解決方案。 – theAlexPoon 2010-10-19 16:05:40

+0

是的,在我的例子中,我可以做到這一點,但我想要做的事情包括解析一頁文本,如果可能的話,我很想在一個正則表達式中完成它 – Vortigern 2010-10-20 07:28:36

回答

2

PHP的微調功能會做:

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

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