1

simple_html_dom用来获取网站的图像。但有时,图像的链接没有以完整的域 URI 为前缀,例如http://example.com. 它们看起来像

  • 图片/_home-ss-21.jpg
  • /_home-ss-22b.jpg
  • ./_1249a7s.png 或
  • ../../../a19489s_20110412.jpeg。

如何将这些 URI 转换为绝对 URI,包括协议和域信息。

<?php
header('Content-type:text/html; charset=utf-8');
require_once 'simple_html_dom.php';
$v = 'http://www.typepad.com/';
$html = file_get_html($v);
foreach($html->find('img') as $element) {
    echo $element->src.'<hr />';   
}
?>
4

3 回答 3

2

在您的内部,您foreach可以尝试以下方法来构建图像的 URL。

$img_src = $element->src;
if(!strstr($img_src, 'http://')) {
    $img_src = $v . $img_src;
}
echo $img_src . '<hr /';

有一些脚本也可以完成这项工作,将相对 URL 转换为绝对 URL:

我从未尝试过它们,但它们应该可以帮助您克服这些困难。

于 2011-04-13T12:41:59.867 回答
2

3个选项:

  1. 其他站点上的图像以 http:// > 使用直接链接开头
  2. 图片以/开头,使用其他网站的主页+图片
  3. 图片不以 / 开头,使用完整的 url + 路径到您正在检查的站点的主管并添加图片
于 2011-04-13T12:45:06.220 回答
1

./ 是当前目录,所以如果你在http://example.com并且你看到一个带有 src 属性的图像 ./hoopy_frood.png 这意味着整个地址是http://example.com/hoopy_frood.png

../ 表示一个目录,例如在http://example.com/ice_cream/sundae.html,如果你看到一个带有 src 属性的图像 ../images/hoopier_is_not_a_word.gif 那么图像 hoopier_is_not_a_word.gif 在一个名为 images 的目录与名为 ice_cream 的目录位于站点根目录中。

于 2011-04-13T12:40:37.290 回答