0

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

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

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

我查看了其他问题,他们似乎专注于使用正则表达式或类似的东西将站点域添加到 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 />';
}
4

1 回答 1

1

分三种情况:

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

首先是parse_url(来自 file_get_contents),然后if/elseis/else根据以上三点对每个链接进行简单处理

于 2013-08-05T21:28:26.203 回答