0

我有一个情况。我使用这段代码使用 php 阅读了一个 html 页面$body = file_get_contents('index.htm');

现在在 index.htm 文件中有一段 html 代码,如下所示,我有时需要删除/取决于标准,所以有时需要删除,有时不需要。

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

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

4

3 回答 3

2

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

于 2009-07-28T08:26:57.630 回答
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>' 

没有表格部分

于 2009-07-28T09:32:56.980 回答
1

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

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

这也适用于你的属性或在您的

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

于 2009-07-28T10:00:46.427 回答