Petite aide avec les regex :D

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

voilà j'ai quelque chose de "simple" à réaliser en PHP :

- J'ai un texte avec des accents, admettons :

"j'ai un gros écrou, une vis, ainsi qu'une clé à molette".

- J'ai une une liste de mot enregistré dans un tableau, sans accent :

gros ecrou
vis
cle

- Je veux donc vérifier la présence de ces mots dans mon texte. Je parcourt donc chaque ligne du tableau contenant les mots, et je compare chaque mot au texte en prenant soin de supprimer tous les accents dans le texte. J'arrive donc à trouver les mots de la liste qui sont présent dans le texte.

L'objectif est d'ajouter des crochets autour des mots trouver ... Mais là je vois pas comment faire ? Le problème est que ce remplacement doit être fait dans le texte avec les accents et non dans le texte sans accent qui a servit à faire la vérification ?

Auriez-vous une idée ? Existe t'il une option pour les regex qui permettrait de pas prendre en comtpe les accent ? (des fois ca serait bien d'être anglais :roll: ).

Merci d'avance !
 
WRInaute discret
je ne comprend pas trop ton probleme.

Mais dans ton parcours de tableau, tu peux mettre chaque mots dans un autre tableau, en spécifiant pour un mot accentué, tu le rajoutes avec crochets, non ?

exemple rapide:

Code:
$tab=array();
foreach( $mots as $k => $v){
if mot accentué
$tab[$k]=>'['. $v.']';
else{
$tab[$k]=>$v;
}
}

non ?
 
WRInaute occasionnel
Oui c'est à peu pres ce que j'ai fait :d

Le principal problème était au niveau de l'accentuation mais je viens de m'apercevoir que les regex s'en foutait des accents donc ca devrait tout résoudre :D

je vous tient au courant :)

[edit : argh non faux espoir :( ]
 
WRInaute occasionnel
Et bien c'est simple,


je fait par exemple quelque chose comme :

$texte = preg_replace("#(test)#", "[\\1]", $texte);

Ceci devrait me remplacer les mot "test" present dans le texte par "[test]". Mais j'aimerai aussi que les mots "tést" ou "tèst" puisse entre remplacés !

Il y a peu être une option pour ca ?
 
WRInaute occasionnel
Sinon l'idée serait d'avoir un regex dans ce genre :

$texte = preg_replace("#(t[eéêè]+st)#", "-\\1-", $texte);

donc remplacer automatiquement les voyelles par leurs possibilités avec accent ou pas, mais je me demande si y'a pas plus simple/ moins lourd ?
 
Discussions similaires
Haut