如何使用php根据子值从字符串中删除html元素?

时间:2018-09-24 10:44:46

标签: php html string domdocument

有一个分配给变量$ text的html表。 (表可以具有不同的行数)

摆脱第2列中没有值的行(在本例中为第2行)的最简单方法是什么

示例:

$text = <<<EOT
<table style="width: 430px;">
<tbody>
<tr>
<td style="width: 199px;"><b>Row 1:</b></b></td>
<td style="width: 413px;">6754</td>
</tr>
<tr>
<td style="width: 199px;"><b>Row 2:</b></td>
<td style="width: 413px;"></td>
</tr>
<tr>
<td style="width: 199px;"><b>Row 3</b></td>
<td style="width: 413px;">7567</td>
</tr>
</tbody>
</table>

EOT;

预期结果:

$text = <<<EOT

<table style="width: 430px;">
<tbody>
<tr>
<td style="width: 199px;"><b>Row 1:</b></b></td>
<td style="width: 413px;">6754</td>
</tr>
<tr>
<td style="width: 199px;"><b>Row 3</b></td>
<td style="width: 413px;">7567</td>
</tr>
</tbody>
</table>

EOT;

1 个答案:

答案 0 :(得分:0)

我认为使用DOMXPath是从html中删除目标元素的最佳方法。使用xpath,您可以选择trtd秒的时间。

$doc = new DOMDocument();
$doc->loadHTML($text);
$xpath = new DOMXPath($doc);
$row = $xpath->query("//tr[td[2]='']")->item(0);
$row->parentNode->removeChild($row);
$newText = $doc->saveHTML();

demo

中进行检查