Bonjour,
Je me suis fait une petit fonction pour remplacer tout les accents et caractères spéciaux d'une chaine, ainsi que les espaces et autre spécialités.
Seulement elle ne fonctionne pas exactement comme je le voudrais. En effet, à chaque fois qu'il remplace un accent, il ajoute un "e" juste avant, soit le premier élément de mon tableau $t_Replace.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 function FormatterChaine($strChaine) { $strChaine = strtolower($strChaine); $strChaine = html_entity_decode($strChaine, ENT_QUOTES, 'UTF-8'); $t_Search = array('|[éèêë]|i','|[àâä]|i','|[îï]|i','|[ûùü]|i','|[ôö]|i','|[ç]|i','|[^a-zA-Z0-9]|'); $t_Replace = array('e','a','i','u','o','c','-'); $strChaine = preg_replace($t_Search, $t_Replace, $strChaine); $strChaine = preg_replace('|-+|', '-', $strChaine); return $strChaine; }
Par exemple "Tir à l’arc" devient "tir-ea-l-arc" au lieu de "tir-a-l-arc".
"Déjà" devient "deejea" au lieu de "deja".
D'où peut venir ce problème ?
Et au passage si vous avez des propositions pour améliorer la fonction, c'est avec grand plaisir que je les reçoit.
Partager