[Résolu] Besoin d'aide pour syntaxe expression régulière

Besoin d'aide pour syntaxe expression régulière [Résolu] - PHP - Programmation

Marsh Posté le 25-04-2008 à 17:54:24    

Bonjour tous,  
 
Voilà je voudrais utiliser preg_match() pour comparer d'une part une array de strings dont les éléments sont composés de la traduction d'un mot en plusieurs langues (reliées par des tirets) , et de l'autre un label dans une langue unique.
 
Par exemple :  

Code :
  1. $myarray = ("Immobilier-Immobilien","Voyages-Reizen","Avis-Berichten" );
  2. $mystring = "immobilier"
  3. foreach ($myarray as $item)
  4. { if (preg_match("/".$mystring.'/i',$item))   ; // preg_match case insensitive
  5. echo "OK!";
  6. }


 
Cet exemple simplifié de script fonctionne bien et me retourne un "OK!".
 
Mais voilà, il s'avère que pour une raison inutile d'expliquer ici, les éléments de $myarray sont écris sans caractères accentués.
Or, si je prends comme $mystring la valeur en néerlandais de "immobilier" je tombe sur "immobiliën" avec un e tréma. Evidemment le preg_match ne va plus.
 
Je suis à la recherche d'une syntaxe pour faire passer tous mes ëêéè pour des e, tous les äá pour des a, etc. mais je sais pas trop comment faire (je suis un total noob en regexp ..  :( )  
 
quelqu'un peut me tuyauter svp ?  :hello:


Message édité par ZeBix le 25-04-2008 à 18:30:06
Reply

Marsh Posté le 25-04-2008 à 17:54:24   

Reply

Marsh Posté le 25-04-2008 à 18:01:49    

ëêéè :
 
Tu mets [ëêéè]


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 25-04-2008 à 18:03:44    

Oki ça je connaissais, mais je veux dire comment faire pour que dans le preg_match, il considère [ëêéè] comme un [e] ?

Reply

Marsh Posté le 25-04-2008 à 18:07:04    

Soit dans ton preg_match tu utilises l'expression Immobili[ëêéèe]n    // Attention, j'ai mis le e dedans
 
Soit en amont tu fais un preg_replace de ë, ê, é, è, par e


Message édité par CyberDenix le 25-04-2008 à 18:10:05

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 25-04-2008 à 18:21:41    

Hehe merci :) - dans le preg_match j'utilise une variable donc je peux pas hard-coder le [ëêéèe] ..

 

Grâce à "preg_replace" j'ai eu des résultats satisfaisants sur Google et apparemment pas mal de gens conseillent d'utiliser strtr, je vais plutôt me diriger vers cette solution plus simple je pense :)

 

Merci pour le coup de main

 

*edit* Voilà la fonction :)

 
Code :
  1. function FlattenAccents($str)
  2. {
  3.     return strtr($str,"âäàêëéèîïôöüùç","aaaeeeeiioouuc" );
  4. }
 

C'est pas le plus clean du monde, mais ça marche vite et bien pour ma situation, et en cas de caractère supplémentaire (genre les majuscules accentuées mais je pense pas que j'en aie) j'ai qu'à rajouter :)

 


Message édité par ZeBix le 25-04-2008 à 18:30:27
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed