делаю так: Код (Text): $dom = new DOMDocument(); @$dom->loadHTML($html); $nodes = $dom->getElementsByTagName('img'); foreach ($nodes as $element) { $link = $element->getAttribute('src'); } } Как гарантировано получить в $link абсолютный (полный) путь URL? Спасибо!
Ну хорошо, если src не содержит имя хоста, тогда путь относительный . Далее, если в начале строки src есть знак «/» то это путь относительно «корня сайта» , если же знака «/» нет, то относительно «папки с которой загрузили» Например пусть url-страницы с которой мы взяли html-код для работы c DOM будет «example.com/topic/about.htm», тогда если у нас ссылка будет иметь вид «/books.html», то это значит что она указывает на «example.com/books.html», а если же «books.html», то это значит что она указывает на «example.com/topic/books.html» И вот что мне от вас нужно, так это мнение - прав я или нет?
Ну вроде бы прав, осталось реализовать Еще вот как-бы «..» обрабатывать? Типа аналог realpath только для URL
вот что получилось: PHP: <?php // $page_url - URL страницы, html-код которой обрабатываем // $link_url - ссылка в html-коде function GetFullURL($page_url, $link_url) { $link_url_staff = parse_url($link_url); if (isset($link_url_staff['host'])) return $link_url; // TODO Processing '..' $page_url_staff = parse_url($page_url); $link_path = $link_url_staff['path']; if ($link_path[0] == '/') return $page_url_staff['scheme']."://".$page_url_staff['host'].$link_path; // TODO 'user' & 'pass' return dirname($page_url).'/'.$link_path; } ?>