PHP在远程URL中查找相对文件的地址

时间:2014-04-18 11:41:42

标签: php html wordpress image

我有一个PHP抓取工具,它获取任何URL的内容并读取它。遇到图像(img src=)的代码时,它会找到源路径。我需要做的是,如果路径是相对的,则将其设为绝对路径。

如果页面本身的URL为true,我可以看到可以解决这个问题。然而,许多URL,如WordPress站点上的URL,都有大量的.htaccess。

所以我想说我有这个页面:

http://example.com/archives/12/4/page-title/

我不知道这个网址到底是什么,但我猜得'12'和'4'不是目录。

在该页面上,我有img src="/images/picture/jpg"。如何计算出该图像的绝对路径?

我搜索了两种可能性:

  1. 找出网页的真实网址 - 在此
  2. 上找不到任何内容
  3. 在不使用URL的情况下查找远程文件的绝对路径 - 在这个
  4. 找不到任何东西

    有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你觉得太复杂了。别!

从外部视图中,您对任何重写等都不感兴趣。解决此类对象(例如图像)的唯一方法是URL。这就是浏览器的功能。它结合了当前加载页面的基本URL和图像的相对路径。传递对象,或者URL被破坏。无论服务器内部重写请求或执行其他神奇的事情有多少次和复杂程度,都是如此。

这不属于您的业务,您无法绕过这个。

没有“真正的网址”,你没有使用“绝对路径”,如果存在的话。

答案 1 :(得分:0)

[编辑纠正错字 - 我没有注意到示例中src上的主要斜线]

您拥有与浏览器一样多的信息。如果它在页面/images/picture/jpg上看到带有src http://example.com/archives/12/4/page-title/的图片,那么它将从http://example.com/images/picture/jpg加载图片。如果src在同一页面上只是images/picture/jpg,您将从http://example.com/archives/12/4/page-title/images/picture/jpg

获取图片

如果那些不是真实的"页面然后.htaccess也必须处理图像URL,因为这将是浏览器调用的URL。无论如何,.htaccess中的大多数重写对于用户来说是不可见的 - 例如对于像Wordpress这样的CMS来说,将与磁盘上的文件不匹配的所有内容重定向到index.php以供CMS处理,但用户仍然可以看到他们漂亮的URL。

我使用wordpress的经验是它总是放入图像的绝对URL(至少如果通过Wordpress编辑系统添加 - 如果你自己做HTML,那么你自己做)。

简短回答:如果您正在抓取网页,那么您不需要知道"真正的" url(无论如何通常只是/index.php)。那是.htaccess的神奇之处