Php 使用CURL更改相对url
我正在尝试使用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_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:这个问题没有显示任何研究成果;这是不清楚或没有用处。最好首先理解为什么事情不起作用,而不是在这里转储代码,然后问为什么不起作用。我打赌你比这更聪明。