2014-10-18 3 views
0

Я пытаюсь принести FavIcon путь к изображению сайта, и я делаю что-то вроде:PHP: Как получить абсолютную ссылку HREF атрибута

$favicon_img_url = $link->getAttribute('href'); 
echo $favicon_img_url; 

Но это только возвращает относительный URL (/ Favicon .ico) и НЕ абсолютная ссылка (http://www.anysite.com/favicon.ico), которую я хочу.

EDIT: Для большей ясности, здесь больший кусок кода:

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; 

Это возвращает только «/favicon.ico» не «http://www.website.com/favicon.ico»

+0

Что это? вы используете 'DOMDocument'? показать полные коды – Ghost

+0

Имеет ли значение href абсолютный URL? если нет, вы можете сделать: '$ favicon_img_url = 'http: //'. $ _SERVER ['HTTP_HOST']. $ link-> getAttribute ('href'); ' – aesede

+0

На сайте может быть что угодно в случайном порядке. Некоторые используют абсолютный путь, а некоторые - нет. То, что я хочу получить, - это абсолютный путь к файлу, независимо от того, показывает ли атрибут href относительный или абсолютный URL-адрес. – netizen0911

ответ

0

пытаются добавить относительный путь, домен URL $ _SERVER ['SERVER_NAME']

Редактировать: он дает вам домен без http или https. Чтобы добавить его, вы можете проверить, является ли это https или http: if(isset($_SERVER['HTTPS'])){..}else{...}

+0

Проблема в том, что сайт может быть любым в случайном порядке. Некоторые используют абсолютный путь, а некоторые - нет. Если я добавлю $ _SERVER ['SERVER_NAME'], это вызовет проблемы с абсолютным URL-адресом? То, что я хочу получить, - это абсолютный путь файла независимо от того, показывает ли атрибут href относительный или абсолютный. – netizen0911

+0

я вижу. Я бы проверял, является ли полученный URL абсолютным или относительным. Если это относительный, то я использую выше решение. Как проверить, является ли URL относительным/абсолютным? Проверьте этот http://stackoverflow.com/questions/12013268/php-regex-to-determine-relative-or-absolute-path –

0

Атрибут 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; др: Вы не можете, не зная, не базовый URL для страницы, на которой ваши <a> падает.

Смежные вопросы