在PHP中使用正则表达式删除所有出现的html <a> tag</a>

时间:2013-04-24 17:24:58

标签: php regex

我有以下PHP代码:

$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 个答案:

答案 0 :(得分:1)

将你的正则表达式改为ungreedy:添加U修饰符。

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

应该能满足您的需求。