2012-09-06 5 views
-1

Serait possible avec PHP et une expression régulière pour faire ce qui suit. Obtenez tous les liens hypertexte à l'intérieur d'un contenu et réécrivez-les si le domaine de premier niveau du lien hypertexte correspond à un nom tld donné à partir du tableau.php expression régulière et remplacer

maintenant une expression régulière qui réécrit tous les liens hypertexte dans un contenu donné

preg_replace('/<a(.*)href="([^"]*)"(.*)>/','<a$1href="goto.php?url=$2"$3>', $content); 

exemple

$tld = array("http://www.example.com","http://www.test.com"); 

if <a href="www.example.com">example</a> than <a href="/goto.php?url= www.example.com"</a>; 
+5

Utilisez un parseur DOM à la place. – Brad

+3

[Le poney il vient ...] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) –

+0

oh l'homme devient compliqué, je perds ma foi. – lgt

Répondre

1

Vous pouvez consolider votre regex un peu ...

$pattern = <<<EOL 
/<a([^>]+)href\s*=\s*(['" ]?)([^"'> ]*)(['" ]?)([^>]*)>/si 
EOL; 

$replacement = "<a$1href='goto.php?url=$3'$5>"; 

preg_replace($pattern, $replacement, $content); 

Impossible de tester cela maintenant, donc il peut y avoir une faute de frappe ...

+0

Merci beaucoup je vais essayer – lgt