Я ищу скрипт, который удаляет все атрибуты, кроме 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();
Теперь моя проблема в том, что он удаляет только первый атрибут, который является «классом». Я отладил и обнаружил, удаляю ли я строку, имеющую цикл удаленияAttributeNode, работает нормально 4 раза, но в случае использования этого цикла просто работайте один раз, удаляйте только первый атрибут и разрывы.
Кто-нибудь имел эту проблему раньше или есть решение?