Aller au contenu

Sujets conseillés

Posté

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

Posté

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.

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

Veuillez vous connecter pour commenter

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



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