2013-04-24 31 views
1

的所有出现:在PHP中使用正则表达式来删除我有下面的PHP代码的HTML <a>标签

$originalStr = '<p>start<a class="wt_article_link" onmouseover="WeiboCard.show(2789895193, \'sports\' , this)" href="http://weibo.com/u/2789895193?zw=sports" target="_blank">[x]</a> middle <a class="wt_article_link" onmouseover="WeiboCard.show(2094902981, \'sports\' , this)" href="http://weibo.com/u/2094902981?zw=sports" target="_blank">[微博]</a> end</p>'; 

$pattern = '~<a(.*)>(.*)</a>~'; 
$newStr = preg_replace($pattern, '', $originalStr); 
echo $newStr; 

预期结果:

<b><p>start middle end</p></b> 

实际结果:

<b><p>start end</p></b> 

莫非任何人都可以帮助我写出正确的正则表达式来实现预期的结果?谢谢。

回答

1

改变你的正则表达式是不合理的:添加U修饰符。

$pattern = '~<a(.*)>(.*)</a>~U'; 

应该满足您的需求。

+0

“U”修饰符在哪里? – 2013-04-24 17:28:35

+0

@JonathanKuhn错字,刚刚编辑。 – bwoebi 2013-04-24 17:28:48

+0

作品,谢谢! – Ben 2013-04-24 17:35:22