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.

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;
}
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.

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.