2015-04-30 98 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);