入力 HTML を壊して強制的に「修復」する PHP 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 にしてください。そうしないと、比較が失敗します (または、既存の相対 URLのhttp://current-domain.xxxを埋めるようにコードを更新します)。