8 votes

utilisation de php preg_replace pour modifier l'attribut href d'un lien html

J'essaie de remplacer tous les liens href's d'une grande chaîne par une URL différente. Avec le code suivant, il semble que seul le deuxième lien soit remplacé, laissant le premier intact, quelqu'un peut-il m'aider ?

$string_of_text = '<a href="http://www.php.net/">PHP</a> <a href="http://www.apache.org/">Apache</a>';
echo preg_replace('/<a(.*)href="(.*)"(.*)>/','<a$1href="javascript:alert(\'Test\');"$3>',$string_of_text);

15voto

Joop Eggen Points 30166

Au lieu d'un caractère . utiliser des guillemets non (^) [^"]

echo preg_replace('/<a(.*)href="([^"]*)"(.*)>/','<a$1href="javascript:alert(\'Test\');"$3>',$string_of_text);

6voto

Aurelio De Rosa Points 11778

Il suffit d'utiliser l'opérateur greedy dans votre expression rationnelle comme suit :

'/<a(.*?)href="(.*?)"(.*?)>/'

0voto

darks0ul Points 326

Légères modifications apportées à la réponse d'Aurelio De Rosa :

'/<a(.*?)href=(["\'])(.*?)\\2(.*?)>/i'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X