【问题标题】:Curl and relative path in <head><head> 中的卷曲和相对路径
【发布时间】:2013-04-18 00:17:37
【问题描述】:

我正在使用这个脚本来抓取一个网站:

<?php
$url = "http://www.nu.nl";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);

echo $curl_scraped_page;
?>

输出在 head 部分的 javascript、css 文件中显示错误的域。所以我尝试用以下方法修复它:

$url = preg_replace("/<head>/i", "<head><base href='$url' />", $url, 1);

不起作用,有什么想法吗?我什么都看不出来。

Example

【问题讨论】:

  • 变量$url 具有误导性。它是一个包含 HTML 的字符串,所以 $html$html_output 会是一个更好的名称。
  • 添加这样的基本标签不会影响 css url() 指令等中的 url。
  • @Frits van Campen 我明白你在说什么,但它仍然不起作用..
  • @Marc B 我之前用javascript添加了一个基本标签,我试图在服务器端做。但现在你说那行不通。为什么不呢?

标签: php curl relative-path


【解决方案1】:

如何使用正确的变量? $curl_scraped_page 是您的页面,$url 是您的网址...但是您将 $url 传递给了 preg_replace

$curl_scraped_page = preg_replace("/<head>/i", "<head><base href='$url' />", $curl_scraped_page, 1);

【讨论】:

  • @Youss 您是否也将函数调用结束时的 $url 替换为 $curl_scraped_page
  • 有效!我之前一定做错了什么..非常感谢你:-)
猜你喜欢
  • 2018-08-07
  • 1970-01-01
  • 2014-02-06
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
  • 2013-07-14
  • 2010-12-17
  • 1970-01-01
相关资源
最近更新 更多