adatim Posté 9 Mai 2005 Posté 9 Mai 2005 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="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 ! Alors si quelqu'un a une autre solution merci de me la proposer ca me ferait gagner du temps Lionel
Anonymus Posté 9 Mai 2005 Posté 9 Mai 2005 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.
adatim Posté 9 Mai 2005 Auteur Posté 9 Mai 2005 (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é 9 Mai 2005 par adatim
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant