Blueb Posté 22 Septembre 2005 Posté 22 Septembre 2005 Bonjour, Dans un texte contenu dans la variable $contenu, j'aimerais remplacer la première occurence du mot allergène pour le souligner. Avec le code : $contenu = str_replace("allergène","<u>allergène</u>",$contenu); ?> il me remplace toutes les occurences du mot allergène de la variable $contenu. Connaissez un moyen de ne souligner que la première occurence du mot allergène? Merci d'avance.
Anonymus Posté 22 Septembre 2005 Posté 22 Septembre 2005 Bonjour, Il te faut utiliser soit les expressions régulières, soit la fonction strpos, qui te permet de trouver la position de 'la première occurence d'une chaine', dans une autre chaine. Une fois trouvée, tu n'as plus qu'à découper la chaine en question en 2 (avec substr() ), puis à effectuer le remplacement sur la première partie (avec str_replace() ), puis à recoller les 2 morceaux (avec.. un point ). Sinon, il te reste les expressions régulières, qui... ne sont pas si terribles que ca Anonymus.
loufoque Posté 22 Septembre 2005 Posté 22 Septembre 2005 $contenu = substr_replace($contenu, '<u>allergène</u>', strpos($contenu, 'allergène'), 9);
Dan Posté 22 Septembre 2005 Posté 22 Septembre 2005 Bonjour, La fonction preg_replace permet l'utilisation d'un quatrième paramètre représentant le nombre de remplacements à effectuer. En son absence, sa valeur est de -1, signifiant "pas de limite". Donc: $chaine=preg_replace("/allergène/","<u>allergène</u>",$chaine,1); remplacera seulement la première occurence de "allergène" par sa version soulignée dans $chaine Elle a aussi l'avantage de pouvoir prendre des tableaux pour les deux premiers arguments, dans le cas de remplacements multiples. Dan
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant