2013-05-05 105 views
-3

我試圖使用CURL來抓取一些網站。爲了改變相對URL的我已經插入這樣的:使用CURL更改相對網址

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

它的工作好於大多數的網站,但不是所有的人。例如本網站「NS Website」節目的沒有任何影響,這意味着該URL的完成我的域基地網址:mydomain.com/css.css

這是完整的代碼即時通訊使用:

<?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; 

?> 

Live example at phpfiddle

+3

那是因爲你使用正則表達式來添加元素:

替換爲正則表達式。最簡單的方法是使用DOMDocument。它不適用於你的鏈接示例網站的具體原因是因爲它具有''而不僅僅是''。 – Jon 2013-05-05 09:33:56

+0

@Jon你說的「DOMDocument」是什麼意思? JavaScript的? – Youss 2013-05-05 09:35:48

+1

@Youss http://php.net/DOMDocument - 對於已經有不同' hakre 2013-05-05 09:35:52

回答

1

你的問題是在正則表達式中。

您正在尋找<head>,但給出的示例網站有一個<head profile="http://gmpg.org/xfn/11">

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

非常感謝你:) – Youss 2013-05-05 09:44:21