Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2957 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Expression régulière : mot qui n'est pas dans une balise

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Expression régulière : mot qui n'est pas dans une balise

n°2246334
naeco
Buddy Rich Big Band
Posté le 17-12-2014 à 12:35:42  profilanswer
 

Bonjour,
 
J'ai besoin d'écrire une expression régulière et je galère... Je galère car je voudrais réussir à le faire en une seule expression régulière, pour la beauté du geste. Le faire en plusieurs étapes, je saurais.
 
Voilà l'idée : Le nom de mon club est le MYCA, écrit dans une police particulière. Et un certain bateau du club s'appelle le MYCAJU. Et bien sûr, le mot MYCA revient également un peu partout dans les URLs, car c'est naturel de vouloir nommer des répertoires "dossier MYCA" ...  
 
Je voudrais traiter les posts sur le site de telle manière que :
 
MYCA soit remplacé par <span class="myca">MYCA</span>, sauf s'il est compris dans un autre mot comme MYCAJU, et sauf s'il est dans une adresse d'une URL.
 
Pour la première et deuxième partie, c'est assez simple :
 

Code :
  1. $stringEntree = preg_replace('#([\s\t\n\r>])(MYCA)([<\.\s\t\n\r])#','$1<span class="myca">MYCA</span>$3', $stringEntree);


 
MAIS
 
Pour dire que je ne veux pas faire ce remplacement si je me trouve dans une URL, je n'y arrive pas.
J'ai tenté sans conviction :
 

Code :
  1. $stringEntree = preg_replace('#[^(?:<a href=" )]([\s\t\n\r>])(MYCA)([<\.\s\t\n\r])[^(?:</a> )]#U','$1<span class="myca mot_myca">MYCA</span>$3', $stringEntree);


 
Mais ça ne marche évidemment pas.
 
Je n'ai pas d'idée pour réussir à le faire en un seul preg_replace.
 
Une idée ?

mood
Publicité
Posté le 17-12-2014 à 12:35:42  profilanswer
 

n°2246347
naeco
Buddy Rich Big Band
Posté le 17-12-2014 à 14:41:50  profilanswer
 

Sinon pour le faire en deux fois, la solution :
 
 

Code :
  1. $stringEntree = preg_replace('#([\s\t\n\r>])(MYCA)([<\.\s\t\n\r])#','$1<span class="myca">MYCA</span>$3', $stringEntree);
  2. $stringEntree = preg_replace('#(<a href=".+)(<span class="myca mot_myca">MYCA</span> )(.+> )#iU','$1MYCA$3',$stringEntree);


 
mais je trouve ça moche :o


Message édité par naeco le 17-12-2014 à 15:13:54

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Expression régulière : mot qui n'est pas dans une balise

 

Sujets relatifs
URGENT, but de la balise Multi-Décision operation flowcodeURL rewinting - expression régulière
Image dans les balises option sous Chromegreasemonkey, autoremplissage balise select
Changer le contenu d'une balise HTML avec Javascriptfichier xml corrompu balise absente
JS - Expression régulière : supprimer des attributs de balises htmlExtraire les données entre une balise span sur site externe
expression reguliére supp balise 
Plus de sujets relatifs à : Expression régulière : mot qui n'est pas dans une balise


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR