Php 使用CURL更改相对url

Php 使用CURL更改相对url,php,curl,relative-path,relative-url,Php,Curl,Relative Path,Relative Url,我正在尝试使用CURL刮取一些网站。为了更改相对URL,我插入了以下内容: $curl_scraped_page = preg_replace("/<head>/i", "<head><base href='$url' />", $curl_scraped_page, 1); $curl\u scraped\u page=preg\u replace(“//i”,”,$curl\u scraped\u page,1); 它对大多数网站都很有效,但不是所有

我正在尝试使用CURL刮取一些网站。为了更改相对URL,我插入了以下内容:

 $curl_scraped_page = preg_replace("/<head>/i", "<head><base href='$url' />", $curl_scraped_page, 1);
$curl\u scraped\u page=preg\u replace(“//i”,”,$curl\u scraped\u page,1);
它对大多数网站都很有效,但不是所有网站都有效。例如,这个网站“show”根本没有效果,这意味着URL是以我的域作为基本URL完成的:mydomain.com/css.css

这是Im使用的完整代码:

<?php

$url = $_GET['url'];

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

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

curl_close($ch);

echo $curl_scraped_page;

?>

您的问题在正则表达式中

您正在查找
,但给定示例的网站有一个

将正则表达式替换为:

$curl_scraped_page = preg_replace("/<head.*>/i", "<head><base href='$url' />", $curl_scraped_page, 1);
$curl\u scraped\u page=preg\u replace(“//i”,”,$curl\u scraped\u page,1);

这是因为您正在使用正则表达式添加元素。最简单的方法是使用DOMDocument。它不适用于链接的示例站点的具体原因是因为它有
,而不仅仅是
@Jon“DOMDocument”是什么意思?Javascript?@Youss-另外,这不适用于具有不同的
@hakre链接的网站:)但是我这边的-1:这个问题没有显示任何研究成果;这是不清楚或没有用处。最好首先理解为什么事情不起作用,而不是在这里转储代码,然后问为什么不起作用。我打赌你比这更聪明。