2013-06-03 24 views
3

之間更換子更新問題:PHP正則表達式:兩個特殊字符

$li_text = $li->plaintext; 
echo '<br>'.$li_text; 
echo '<br>'.$li_text = preg_replace('/\:(.*?)\>/',':', $li_text); 

$li所獲得的價值 「資格:學校&畢業> BE/B.Tech(工程)」 //by using simple html DOM parsing from other websites

輸出我越來越是

Qualification : School & Graduation > BE/B.Tech (Engineering) 
Qualification : School & Graduation > BE/B.Tech (Engineering) 

如果我指派$li_text = "Qualification : School & Graduation > BE/B.Tech (Engineering)"那麼REGEX工作正常。

+1

確定嗎? [這似乎是在regex101上工作](http://www.regex101.com/r/oB1iW9)。 – Jerry

+2

我剛測試過它們,它們工作正常。你是否將'preg_replace'的返回值分配回'$ str'? (不得不問,有時是簡單的事情) – keithhatfield

+0

@dleiftah我認爲這就是發生了什麼。 – Jerry

回答

2

你的代碼是工作的罰款。請注意0​​不會更改主題(即$str),但會返回結果。

的preg_replace()如果受試者參數是一個數組, 或字符串否則返回一個數組。

如果找到匹配,新主題將被退回,否則 主題,如果出現錯誤將原樣返回或NULL

所以:

preg_replace('/:(.*?)\>/',':', $str); 

echo $str; 

錯誤。但是:

$str = preg_replace('/:(.*?)\>/',':', $str); 

echo $str; 

工作

1

試試這個:

preg_replace('/(?<=:)(.*?)>/', '', $str);