如何使用PHP删除HTML页面中的HTML标记

时间:2009-07-28 08:21:08

标签: php html-parsing

我有一个情况。我使用这段代码$body = file_get_contents('index.htm');

在一个html页面中使用php阅读

现在在index.htm文件中有一段像下面这样的html代码我有时需要删除/依赖于标准,所以有时需要删除它,有时则不需要删除。

<td><table><tr><td></td></tr></table></td>

如何使用 PHP 删除 td 标记之间的整个表格部分。

3 个答案:

答案 0 :(得分:2)

如果您足够幸运,您的页面是XML,那么您可以形成一个DOM并从DOM中删除它。否则正则表达式应该很容易,只要你没有嵌套<table> s(在这种情况下它仍然可能但更棘手)。

答案 1 :(得分:1)

一种方法可以是

$str = '<td><table><tr><td></td></tr></table></td>';
preg_match('/(<td>)(<table>.*<\/table>)(<\/td>)/',$str,$matches);

结果数组

Array
(
    [0] => <td><table><tr><td></td></tr></table></td>
    [1] => <td>
    [2] => <table><tr><td></td></tr></table>
    [3] => </td>
)

可用于重新创建

 '<td></td>' 

没有表格部分

答案 2 :(得分:1)

您可以使用正则表达式替换删除 td 之间的表格

$html=preg_replace('/<td([^>]*)><table[^>]*>.*<\/table><\/td>/', '<td$1></td>', $html);

如果你的

中有属性,这也有效

我自己尝试了(RegEx Tester)并且它有效,希望它也适合你。