Aller au contenu

expressions rationelles


adatim

Sujets conseillés

Salut à tous,

j'ai un petit soucis avec la fonction ereg_replace ...

J'ai besoin de remplacer des balises mais je me retrouve bloqué par un bug que je n'arrive pas à résoudre

Un exemple illustrera plus qu'un long discours ...

j'ai une variable contenant untexte

$montexte="<a href=http://www.google.fr> google</a> et puis un autre pour ne pas faire de jaloux <a href=http://www.msn.fr>msn</a>";

Cette variable que je récupère n'a pas de double quote autours du lien se trouvant dans le href ... je souhaite les rajouter.

Je fais donc :

$montexte= preg_replace("/<a href=(.*)>(.*?)<\/a>/si", "<a href=\"\\1\"> \\2 </a>", $montexte);

le problème c'est que cet appel va me retourner :

<a href=&quot;http://www.google.fr> google</a> et puis un autre pour ne pas faire de jaloux <a href=http://www.msn.fr"> msn </a>

ce qui me fait apparaitre juste msn avec un immense lien dessus

en gros mon script prend tout ce que je lui ai donné et s'arrête non pas au premier </a> mais au dernier de la page !

Pourtant le (.*?)<\/a> devrait l'en empêcher ! :evil:

Alors si quelqu'un a une autre solution merci de me la proposer ca me ferait gagner du temps :rolleyes:

Lionel

Lien vers le commentaire
Partager sur d’autres sites

Ton point d'interrogation est 'valable' pour l'expression entre les balises de fermeture et d'ouverture du lien. ( entre </a> et <a.. )

Il faut le rendre valide pour le lien seulement, ce qui donne :

$montexte= preg_replace("/<a href=(.*?)>(.*?)<\/a>/si", "<a href=\"\\1\"> \\2 </a>", $montexte);

Anonymus.

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

Merci me voilà débloqué en moins de 10 minutes et j'avoue que pour un bug de ce genre j'aurais pu cherché longtemps avant de me dire : "Que suis-je bête !!!"

En tt cas merci beaucoup

Lionel

Modifié par adatim
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...