使用preg_replace删除标记内容

时间:2016-05-20 05:17:29

标签: php preg-replace

我在PHP中有一个长字符串,其中包含很少的表和字(字符串中的HTML)。我需要从中删除所有具有特定类(fQuote)的表,但是当我试图使用我的正则表达式时,它选择了第一个表发生到最后一个结束表标记之间的所有内容。

我的正则表达式:

$content = preg_replace('/<table\s[^>]*class=\"[^\"]*fQuote[^\"]*\"[^>]*>.*<\/table>\s?/ix','',$content);

我的测试字符串:

<table class="fQuote simple_table"><tbody><tr><td class="fQuoteUser"><img class="fQuoteAvatar" src="http://localhost/images/avatars/na.png" /><br /><a class="clear" href="http://localhost/user/1">User1</a></td><td class="fQuoteCorner"> </td><td class="fQuoteTable"><table class="default_table"><tbody><tr><td class="fQuoteBody">Some text</td></tr><tr><td class="fQuoteDate">Quoting a message <a class="clear fQuotedID" href="http://localhost/p/92">#9</a> 12 december 2011 23:43</td></tr></tbody></table></td></tr></tbody></table><p>text needed to stay</p><table class="fQuote simple_table" style="width:932px"><tbody><tr><td class="fQuoteUser"><img class="fQuoteAvatar" src="http://localhost/images/avatars/na.png" /><br /><a class="clear" href="http://localhost/user/2">User2</a></td><td class="fQuoteCorner"> </td><td class="fQuoteTable"><table class="default_table" style="height:187px; width:830px"><tbody><tr><td class="fQuoteBody"><br />Quoted<br /><table align="center" cellpadding="0" cellspacing="1" style="height:34px; width:738px"><tbody><tr><td><table cellpadding="0" cellspacing="0" style="height:32px; width:736px"><tbody><tr><td><em><a class="main_normal" href="http://localhost/p/444" target="_blank">#444</a> <strong>User3</strong>15.12.2011 16:56<br />Some text2</em></td></tr></tbody></table></td></tr></tbody></table><br /><br /><br />some text3</td></tr><tr><td class="fQuoteDate">Quoting a message <a class="clear fQuotedID" href="http://localhost/p/447">#22</a>  15 december 2011 16:33<br /></td></tr></tbody></table></td></tr></tbody></table>

除了

,我需要删除此conrecte测试用例中的所有内容
<p>text needed to stay</p>

当我使用我的正则表达式时,它会获得第一个表格打开标记,并选择所有内容,直到最后一个表格结束标记,留下切割短语并在结果中获得清晰的字符串。

请帮助正确的正则表达式。感谢。

0 个答案:

没有答案