【问题标题】:PHP: Translate relative img src urls to absolutePHP:将相对 img src url 转换为绝对
【发布时间】:2011-08-04 23:04:49
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php html url image absolute-path


    【解决方案1】:

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

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

    更多好例子:

    【讨论】:

      【解决方案2】:

      这是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 是您的基本 URL。

      【讨论】:

      • 对不起,我认为没有必要。我实际上是在我们公司的存储库中发现的。
      猜你喜欢
      • 2014-12-12
      • 2021-07-28
      • 2011-05-25
      • 2017-06-18
      • 2012-07-03
      • 2011-10-24
      • 2019-05-10
      相关资源
      最近更新 更多