如何以编程方式将rel ="external"添加到HTML字符串中的外部链接?

Ale*_*lex 0 php regex string hyperlink

如何检查字符串变量中的链接是否是外部的?此字符串是网站内容(如评论,文章等).

如果是,我如何externalrel属性中附加值?如果他们没有这个属性,请追加rel="external"

mar*_*rio 6

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">';
    }
}
Run Code Online (Sandbox Code Playgroud)

您可能需要更细粒度的检查.但这是一般方法.