没有必要让 PHP HTML 解析器复杂化,它会破坏并强制“修复”您的输入 HTML。
以下是如何将 PHP 与 javascript 结合使用,完整的工作和经过测试的解决方案:
<?php
$arrBadLinks=array(
"http://localhost/something.png",
"https://www.apple.com/something.png",
);
$arrNeutralLinks=array(
"http://www.microsoft.com/index.aspx",
"ftp://samewebsiteasyours.com",
"ftp://samewebsiteasyours.net/file.txt",
);
?>
<html>
<head>
<script>
function colorizeLinks()
{
var arrBadLinks=<?php echo json_encode($arrBadLinks);?>;
var arrNeutralLinks=<?php echo json_encode($arrNeutralLinks);?>;
var nodeList=document.getElementsByTagName("*");
for(var n=nodeList.length-1; n>0; n--)
{
var el=nodeList[n];
if(el.nodeName=="A")
{
if(arrBadLinks.indexOf(el.href)>-1)
el.style.color="red";
else if(arrNeutralLinks.indexOf(el.href)>-1)
el.style.color="green";
else
el.style.color="blue";
}
}
}
if(window.addEventListener)
window.addEventListener("load", colorizeLinks, false);
else if (window.attachEvent)
window.attachEvent("onload", colorizeLinks);
</script>
</head>
<body>
<p>
<a href="http://www.microsoft.com/index.aspx">Neutral www.microsoft.com/index.aspx</a>
</p>
<p>
<a href="http://localhost/something.png">Bad http://localhost/something.png</a>
</p>
</body>
</html>
不适用于相对 URL,请确保将它们设为绝对,否则比较将失败(或更新代码以填写现有相对 URL 的http://current-domain.xxx)。