我正在输出页面上的所有链接,我想让它们成为超链接。
问题是我无法控制源文档的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 />';
}
有三种情况:
- absoulteurls-以[protocol]开头://
- 相对于主机url-以/开头
- 相对于主机/路径url-所有其他
首先是parse_url(来自file_get_contents),然后基于上的三个点在每个链接上进行简单的if/elseis/else