Анализатор HTML подходит для фильтрации входных данных, но для изменения выходных данных вам понадобится производительность простого решения регулярных выражений. В этом случае регулярное выражение обратного вызова будет делать:
$html = preg_replace_callback("#<a\s[^>]*href="(http://[^"]+)"[^>]*>#",
"cb_ext_url", $html);
function cb_ext_url($match) {
list ($orig, $url) = $match;
if (strstr($url, "http://localhost/")) {
return $orig;
}
elseif (strstr($orig, "rel=")) {
return $orig;
}
else {
return rtrim($orig, ">") . ' rel="external">';
}
}
Возможно, вам понадобятся более мелкие чеки. Но это общий подход.