例如
$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
</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 ='#'。
答案 0 :(得分:2)
这应该是非常简单的。
首先,让我们抓住所有的锚标签。 $doc
是您创建的文档with your HTML as the source。
$anchors = $doc->getElementsByTagName('a');
现在我们将逐个浏览它们并检查href
属性。当传递的字符串在黑名单中时,让我们假装函数contains_bad_url
返回true
。你需要自己写一下。
foreach($anchors as $anchor)
if($anchor->hasAttribute('href') && contains_bad_url($anchor->getAttribute('href'))) {
$anchor->setAttribute('href', '#');
}
}
多田。应该就是它的全部内容。你应该能够get the results back as an XML string并做任何你需要做的事情。
答案 1 :(得分:1)
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
}