【发布时间】:2013-02-14 15:31:49
【问题描述】:
我正在搜索删除锚标记中除 href 之外的所有属性的脚本。我发现了一些与我编写的解决方案非常相似的脚本。
$okattrs = array(
'a' => array('href' => true),
);
$content = '<div id="att"><a class="pl" title="hit me" id="myid" href="http://google.com" >Click On Google</a></div>';
$doc = new DomDocument();
$doc->loadHTML($content);
$a_tags = $doc->getElementsByTagName('a');
foreach($a_tags as $k => $a_tag_obj) {
foreach ($a_tag_obj->attributes as $name => $attrNode)
{
if (!isset($okattrs[$a_tag_obj->nodeName][$name]))
{
$a_tag_obj->removeAttributeNode($attrNode);
}
}
}
echo $content1=$doc->saveHTML();
现在我的问题是它只删除了第一个属性,即“类”。我调试并发现如果我删除具有 removeAttributeNode 循环的行可以正常工作 4 次,但是如果使用此循环只能工作一次,则只删除第一个属性并中断。
有人遇到过这个问题或有解决办法吗?
【问题讨论】:
标签: php dom attributes anchor href