2013-03-18 6 views
3

J'utilise le code suivant pour récupérer HTML à partir d'une autre page et placez-le dans ma page php:édition PHP DomDocument tous les liens

$doc = new DomDocument; 

// We need to validate our document before refering to the id 
$doc->validateOnParse = true; 
$doc->loadHtml(file_get_contents('{URL IS HERE}')); 
$content = $doc->getElementById('form2'); 

echo $doc->SaveHTML($content); 

Je souhaite modifier toutes les instances de <a href="/somepath/file.htm"> afin que je puisse préfixer à elle le domaine actuel à la place. Comment puis-je faire ceci? Donc, il faudrait les changer pour: <a href="http://mydomain.com/somepath/file.htm"> à la place.

+0

Si je vous, je vais éviter d'utiliser 'DomDocument' et utiliser directement regex pour trouver les liens et le modifier. – Raptor

+3

comment se fait-il? Partout où je vais sur Stack Overflow, ils disent que vous devriez utiliser 'DomDocument' pour cela. Pouvez-vous me donner un exemple de la façon de le faire avec une regex? –

+0

Vous créez des objets supplémentaires pour les tâches de recherche et de remplacement. Temps d'analyse supplémentaire et mémoire dépensée. Essayez: http://stackoverflow.com/questions/4001328/php-regex-to-get-string-inside-href-tag – Raptor

Répondre

3

essayer quelque chose comme:

$xml = new DOMDocument(); 
$xml->loadHTMLFile($url); 
foreach($xml->getElementsByTagName('a') as $link) { 
    $oldLink = $link->getAttribute("href"); 
    $link->setAttribute('href', "http://mydomain.com/" . $oldLink); 
} 
echo $xml->saveHtml(); 
+0

Mais le 'href' est différent pour chaque lien, donc je voudrais juste ajouter le domaine à lui. Serait-ce simplement: '$ link-> setAttribute ('href', 'http://mydomain.com/" + $ link-> getAttribute (' href ')); '?? –

+0

@SolomonClosson oui, vérifiez ma mise à jour –

+0

Ok, super, mais je dois obtenir le '$ content' pas tout le document. De toute façon, je l'ai compris à partir de votre réponse. Donc, vous l'avez. Merci :) –