使混合链接全部为绝对链接



我正在输出页面上的所有链接,我想让它们成为超链接。

问题是我无法控制源文档的URL。有时是相对的,有时是绝对的,有时又是混合的。

有没有一种简单的方法可以使所有相对链接都是绝对的,同时仍然保留最初是绝对的链接?

我看了其他问题,他们似乎专注于使用regex或类似的东西将站点域添加到URL的开头,如果所有URL都是相对的,这会很好。

如果重要的话,下面是我正在使用的代码:

$html = file_get_contents(-[my url]-);
$doc = new DOMDocument(); 
libxml_use_internal_errors(true); //to hide error messages
$doc->loadHTML($html);
libxml_clear_errors();
$links = $doc->getElementsByTagName('a'); 
foreach($links as $link) 
{
    echo $link->getAttribute('href') . '<br />';
}

有三种情况:

  1. absoulteurls-以[protocol]开头://
  2. 相对于主机url-以/开头
  3. 相对于主机/路径url-所有其他

首先是parse_url(来自file_get_contents),然后基于上的三个点在每个链接上进行简单的if/elseis/else

最新更新