使混合链接绝对

时间:2013-08-05 21:07:27

标签: php dom hyperlink

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

问题是我无法控制源文档的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 个答案:

答案 0 :(得分:1)

有三种情况:

  1. absoulte urls - 以[protocol]://
  2. 开头
  3. 相对于主机网址 - 以/
  4. 开头
  5. 相对于主机/路径网址 - 所有其他网址
  6. 首先parse_url(来自file_get_contents),然后基于上面三点的每个链接上的简单if/elseis/else