我有一个问题,我已经使用了一段时间的脚本,它对我有用,直到我遇到这个问题.
我有一个脚本,我想从html源代码中删除所有p html标签.该脚本部分工作,因为它只删除了一些p标签,但留下了一些.
我不明白为什么会那样做.
$doc = new DOMDocument();
$a = <<<FAIL
<html><body>
<div style="clear:both"></div>
<p class="articletitle">hoo</p>
<p class="articletext">hmmm</p>
<p class="articletext">hmmmm</p>
<p align="center"></p>
</body></html>
FAIL;
$doc->loadHTML($a);
$list = $doc->getElementsByTagName("p");
foreach ($list as $l) {
$l->parentNode->removeChild($l);
$c++;
}
echo $doc->saveHTML() . $c;
Run Code Online (Sandbox Code Playgroud)
脚本返回
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>
<div style="clear:both"></div>
<p class="articletext">hmmm</p>
<p align="center"></p>
Run Code Online (Sandbox Code Playgroud)
遗漏了两个p标签......
你能帮我找一下它跳过一些标签的原因吗?
Man*_*era 11
试试这种方式:
$doc->loadHTML($a);
$list = $doc->getElementsByTagName("p");
while ($list->length > 0) {
$p = $list->item(0);
$p->parentNode->removeChild($p);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3679 次 |
| 最近记录: |