问题描述
||
我已经将使用cURL的HTML页面提取到字符串中,并将其加载到DOMDocument中。在那里,我可以获得所有的img标签及其源属性。我现在的问题是...如何使这些URL绝对?
URL列表可以包含各种变体,例如:
foobar.jpg
http://example.com/foobar.jpg
/foobar.jpg
../foobar.jpg
folder/foobar.jpg
如果从任意URL提取HTML,将这些图像URL转换为绝对URL的安全方法是什么?有没有办法也可以考虑基本标记?
解决方法
这是一个很棒的PHP示例,该如何做。
function rel2abs($rel,$base) {
// something
}
更好的例子:
如何将相对URL转换为绝对URL
如何解析和构建URL
,这是您在此页面上找到的便捷功能:
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;
}
relative7ѭ是您的相对路径,$base
是您的基本网址。