Ich versuche, einen regulären Ausdruck zu finden, der in der Lage ist, alle URLs eines curl'ed Dokuments von relativ zu absolut zu ändern.Ändern Sie relative URLs nach absoluten URLs nach Curl
Eine der Art, die ich gefunden habe, ist der Beitrag here, aber es funktioniert nur für die erste URL und nicht für alle.
Dies ist der Code, ich verwende:
$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;
Wo mache ich falsch?
EDIT Nur um besser zu erklären. Ich habe nicht eine Reihe von URLs, aber ich habe ein ganzes Dokument von curl gesammelt, so dass ich eine Preg Replace-Methode brauche.
Mögliches Duplikat [Transfrom relativen Pfad in absolute URL mit PHP] (http://stackoverflow.com/questions/4444475/transfrom-relative-path -into-absolute-url-using-php) –
Sie könnten diesen Weg mit RamenChef's vorgeschlagene Änderung gehen, aber wird wahrscheinlich glücklicher mit einer robusteren Lösung sein wie die bei http://stackoverflow.com/questions/4444475/transfrom- relativer-pfad-in-absolute-url-using-php. –
Vielen Dank, aber diese URL funktioniert, wenn ich ein Array von URLs habe. In diesem Fall brauche ich einen Ersatz in einem HTML-Dokument – Luca