PHP:将相对img src urls翻译为绝对

时间:2011-04-13 18:33:17

标签: php html url image absolute-path

我已经使用cURL将HTML页面提取到字符串中并将其加载到DOMDocument中。在那里,我可以获得所有img标签及其源属性。我现在的问题是......我怎样才能使这些网址成为绝对的?

网址列表可以包含各种变体,例如:

  • foobar.jpg
  • http://example.com/foobar.jpg
  • /foobar.jpg
  • ../foobar.jpg
  • folder/foobar.jpg

如果从任意URL获取HTML,那么将这些图像URL转换为绝对URL的安全方法是什么?有没有办法可以考虑基本标签呢?

2 个答案:

答案 0 :(得分:1)

您可以在this page找到一个方便的功能:

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是您的基本网址。

答案 1 :(得分:1)

这是一个很好的PHP示例,如何做到这一点。

function rel2abs($rel, $base) { 
// something
}

更多好例子: