我有一个情况。我使用这段代码$body = file_get_contents('index.htm');
现在在index.htm文件中有一段像下面这样的html代码我有时需要删除/依赖于标准,所以有时需要删除它,有时则不需要删除。
<td><table><tr><td></td></tr></table></td>
如何使用 PHP 删除 td 标记之间的整个表格部分。
答案 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)并且它有效,希望它也适合你。