0
我试图找到一个正则表达式,可以将相对于绝对的curl'ed文档的所有URL更改。将相对URL更改为绝对URL Curl
我发现的其中一种方法是发布here,但它只适用于第一个URL,并非全部。
这是代码我使用:
$url="http://www.example.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, 0);
curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result=curl_exec($ch);
curl_close($ch);
$result = preg_replace('~(href|src)=(["\'])(?!#)(?!http://)([^\2]*)\2~i','$1="http://www.example.com$3"', $result);
echo $result;
我在哪里做错了吗?
编辑 只是为了更好地解释。我没有一个url数组,但是我有一个从curl中收集的整个文档,所以我需要一个preg替换方法。
[Transfrom相对路径成绝对URL使用PHP(的可能的复制http://stackoverflow.com/questions/4444475/transfrom-relative-path -into-absolute-url-using-php) –
你可以用RamenChef的建议修改来实现这种方式,但可能会更加健壮,如http://stackoverflow.com/questions/4444475/transfrom-相对路径 - 到 - 绝对网址使用的PHP。 –
谢谢,但是如果我有一个url数组,那么这个url就可以工作。在这种情况下,我需要在html文件中替换 – Luca