Il manque le modificateur u à tes motifs.
Code :
$search = array ('@[éèêëÉÊË]@iu', '@[àâäÂÄ]@iu', '@[îïÎÏ]@iu', '@[ûùüÛÜ]@iu', '@[ôöÔÖ]@iu', '@[ç]@iu');
|
Et i n'est pas utile si dans ta classe tu mets déjà le caractère avec les 2 casses.
Toutefois, pour faire ça proprement, je te recommande l'usage de l'extension intl (la classe Transliterator en particulier qui existe depuis PHP 5.4.0) :
Code :
function remplace_caract_speciaux($in) { return transliterator_create('NFD; [:Nonspacing Mark:] Remove; NFC')->transliterate($in); }
|
Ou si tu l'utilises beaucoup dans un même script :
Code :
function remplace_caract_speciaux($in) { $translit = transliterator_create('NFD; [:Nonspacing Mark:] Remove; NFC'); } return $translit->transliterate($in); }
|
Et pas besoin d'une référence sur ton paramètre, surtout si $in n'est pas modifié.
Message édité par pluj le 04-10-2017 à 16:13:10