PHP Получение и установка атрибутов тегов

im, играемый php и DomDocument …. в основном у меня есть некоторый html, сохраненный в db. С привязными тегами с разными URL-адресами …. Я хочу, чтобы привязать метки привязки, не в списке allowedurl, который должен быть заменен на #

например

$allowed_url_basenames = array('viewprofile.php','viewalbum.php'); 

образец содержимого из db1

 <table cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top"> <a href="viewprofile.php?userid=780">Edrine Kasasa </a> has &nbsp; </td> <td valign="top"> invited 10 friend(s) to veepiz using the <a href="invite.php">Invite Tool</a> </td> </tr> </tbody> 

Я хочу, чтобы функция php оставила первый привязанный тэг href неповрежденным и изменил второй на href = '#'.

Это должно быть довольно прямолинейно.

Во-первых, давайте хватаем все теги привязки. $doc – это документ, который вы создали с вашим HTML в качестве источника .

 $anchors = $doc->getElementsByTagName('a'); 

Теперь мы пройдем через них один за другим и href атрибут href . Давайте притворимся, что функция contains_bad_url возвращает true когда переданная строка находится в вашем черном списке. Вам нужно будет написать это самостоятельно.

 foreach($anchors as $anchor) if($anchor->hasAttribute('href') && contains_bad_url($anchor->getAttribute('href'))) { $anchor->setAttribute('href', '#'); } } 

Тад. Это должно быть все, что нужно. Вы должны иметь возможность вернуть результаты в виде строки XML и делать все, что вам нужно делать с остальными.

Thanx Charles …. придумал это

 function contains_bad_urls($href,$allowed_urls) { $x=pathinfo($href); $bn=$x['filename']; if (array_search($bn,$allowed_urls)>-1) { return false; } return true; } function CleanHtmlUrls($str) { $allow_urls = array('viewprofile','viewwall');//change these to whatever filename $doc = new DOMDocument(); $doc->loadHTML($str); $doc->formatOutput = true; $anchors = $doc->getElementsByTagName('a'); foreach($anchors as $anchor) { $anchor->setAttribute('onclick','#'); if(contains_bad_urls($anchor->getAttribute('href'),$allow_urls)) { $anchor->setAttribute('href', '#'); } } $ret=$doc->saveHTML(); return $ret }