【发布时间】:2018-04-05 03:02:45
【问题描述】:
我有一个像下面这样的 html:
<table>
<thead>
<tr>
<th>Name</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr>
<td>ABC</td>
<td><a data-permission="allow"></a></td>
</tr>
<tr>
<td>B</td>
<td><a data-permission="allow"></a></td>
</tr>
<tr>
<td>C</td>
<td><a data-permission="allow"></a></td>
</tr>
<tr>
<td>D</td>
<td><a data-permission="allow"></a></td>
</tr>
<tr>
<td>E</td>
<td><button type="button" data-permission="allow"></button></td>
</tr>
</tbody>
</table>
现在我正在从上面的示例中找到包含“数据权限”属性(如(a、按钮等)的节点。
为此,我正在使用以下代码。现在我要做的是删除整个<a>..</a> or <button>...</button> 或任何其他元素,如果它们包含“data-permission”属性并且删除后只返回剩余的 HTML。那么如何实现呢?
$dom = new DOMDocument;
$dom->loadHTML($output);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//@data-permission-id');
foreach ($nodes as $node) {
echo $node->nodeValue;
//$node->parentNode->removeChild($node); throws the error "Not Found Error"
}
注意-我试过 $node->parentNode->removeChild($node);内部循环,但它会引发错误。同样在删除该标签后,我想获得剩余的 HTML。我已经阅读了How to delete element with DOMDocument?,但它没有帮助。
【问题讨论】:
-
你想删除
或者只删除标签,我可以通过 jQuery 来完成 使用 PHP,在服务器端。 @Michel,我已经尝试过使用 $node->parentNode->removeChild($node);但它会抛出“未找到错误”。另外,删除后,我正在尝试获取剩余的 HTML,但我不知道这怎么可能。我认为这个问题不是重复的,因为它有差异。要求比较 stackoverflow.com/questions/15272726/…
标签: php html-parsing domdocument