Я вытащил HTML-страницу, используя cURL, в строку и загрузил ее в DOMDocument. Там я могу получить все теги img и их исходные атрибуты. Моя проблема теперь … как я могу сделать эти URL абсолютными?
Список URL-адресов может содержать все виды вариантов, например:
foobar.jpg
http://example.com/foobar.jpg
/foobar.jpg
../foobar.jpg
folder/foobar.jpg
Если HTML извлекается из произвольного URL-адреса, что является безопасным способом преобразования этих URL-адресов изображений в абсолютные? Есть ли способ, с помощью которого можно также учитывать базовый тег?
Вот отличный пример PHP, как это сделать.
function rel2abs($rel, $base) { // something }
Дополнительные примеры:
Здесь вы найдете удобную функцию, которая находится на этой странице :
function absUrl($rel, $base) { if (parse_url($rel, PHP_URL_SCHEME) != '') return $rel; if ($rel[0]=='#' || $rel[0]=='?') return $base.$rel; extract(parse_url($base)); $path = preg_replace('#/[^/]*$#', '', $path); if ($rel[0] == '/') $path = ''; $abs = "$host$path/$rel"; $re = array('#(/\.?/)#', '#/(?!\.\.)[^/]+/\.\./#'); for($n=1; $n>0; $abs=preg_replace($re, '/', $abs, -1, $n)) {} return $scheme.'://'.$abs; }
$rel
– ваш относительный путь, а $base
– ваш базовый URL.