2015-04-30 138 views
1

我的正則表達式(<(div|i)\b[^>]*>)(\bTEST\b)(<\/(div|i)\s*>)正則表達式的HTML標籤內

取代= '媽媽' 從

<div clas="dfsdf">TEST</div> 

MOM 

,但我想的HTML標籤仍然存在 它應該是這樣的: <div clas="dfsdf">MOM</div>

我在做什麼錯了嗎?

+7

與HTML工作時,不要使用正則表達式。有很多其他更好的方法...使用類似於DOM的界面。 – Sirko

+0

請參閱http://stackoverflow.com/a/1732454/797393 – Cylian

回答

0

如果你只是MOM更換,你的整個比賽將被MOM更換..In你的正則表達式<div clas="dfsdf">是第1組($ 1),TEST是捕獲組3($ 3)和</div>是第4組($ 4)..所以,你有以下

$1MOM$4 

來取代它包含需要什麼,只更換對應TEST捕獲組。

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – Alex

+0

@Alex更新了答案,使其更具體..謝謝.. –

0

你可以使用look around

preg_replace('~(?<=<(?:div|i)\b[^>]*>)TEST(?=</\s*(?:div|i)\s*>)~', "MOM', $str);