我正在尝试获取网站的favicon图像路径,我正在做一些类似的事情:
$favicon_img_url = $link->getAttribute('href');
echo $favicon_img_url;
但它只返回相对url(/faviicon.ico),而不是绝对链接(http://www.anysite.com/favicon.ico)我想要的。
编辑:为了更清晰,这里有一大块代码:
function file_get_contents_curl($url)
{
//Some code here to get contents from a website....
}
$html = file_get_contents_curl($target_website);
$doc = new DOMDocument();
@$doc->loadHTML($html);
// GET FAVICON PATH
$links = $doc->getElementsByTagName('link');
for ($i = 0; $i < $links->length; $i++)
{
$link = $links->item($i);
$rel = $link->getAttribute('rel');
if($rel == 'shortcut icon')
$favicon = $link->getAttribute('href');
}
echo $favicon;
它只返回"/faviicon.ico"而不是"http://www.website.com/favicon.ico"
尝试添加到相对路径,域url$_SERVER['SERVER_NAME']
编辑:它给你的域名没有http或https。要添加它,您可以检查它是https还是http:if(isset($_SERVER['HTTPS'])){..}else{...}
href
属性被定义为(绝对/相对)路径,并保持这种状态。当浏览器处理HTML标记时,它将使用该属性做两件事之一:
- 如果它认为属性是一个有效的绝对路径,那么它将成为元素
href
属性 - 如果它认为属性是一个相对路径,它会将其弹出到基本URL的末尾,并将其用作
href
属性
以这个页面标题为例,如果您检查标记,则属性为
/questions/26441184/php-how-to-get-absolute-link-of-href-attribute
这不是一个绝对的路径,但因为浏览器知道基本URL是http://stackoverflow.com,单击它将转到属性值,即:
http://stackoverflow.com/questions/26441184/php-how-to-get-absolute-link-of-href-attribute
tl;dr:如果不知道<a>
所在页面的基本URL,就不能这样做。