Soucis de regex !

  • Auteur de la discussion Auteur de la discussion vin-moi
  • Date de début Date de début
WRInaute occasionnel
salut,

Voilà j'ai un tout petit soucis de regex, j'espère que vous pourrez m'aider :

Grosso modo je souhaite encadrer certains mots par deux doubles crochet ...

par exemple remplacer "blablabla titi blabla bla" par "blablabla [[titi]] blabla bla".

A priori simple ?

Seulement je souhaites prendre en compte les accents, ca donne des regex du genre :


preg_replace("#\b(t[iíîìï]{1}t[iíîìï]{1})\b#isU", "[[\\1]]", $texte, 1);

Ca marche niquel ... sauf quand le mot se termine par un accent !

si par exemple on a titîblabla , il va encadrer titî , alors que ca devrait etre empeché par le \b :( .

Vous avez une idée ?

merci d'avance !
 
WRInaute discret
vin-moi a dit:
preg_replace("#\b(t[iíîìï]{1}t[iíîìï]{1})\b#isU", "[[\\1]]", $texte, 1);

Ca marche niquel ... sauf quand le mot se termine par un accent !

si par exemple on a titîblabla , il va encadrer titî , alors que ca devrait etre empeché par le \b :( .

Vous avez une idée ? !
Moi je découperai chaque mot de la chaine dans un tableau.
S'il contient un accent, alors tu encadre la valeur.
tu parcours ton tableau et tu affiches mots à mots;

peut etre que qqun a une autre soluce :wink:
 
WRInaute occasionnel
Salut,

bah pour le moment j'ai remplace le \b par :

([^a-z0-9áâàäéêèëíîìïóôòöúûùüýçñ-]+)

pour signifier qu'il ne doit pas y avoir de lettre ou de tiret collé au mot, et ca marche bien :)
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut