preg_replace() et les accents
Pour matcher les accents avec preg_replace ou preg_match, il est possible d’utiliser la séquences d’échappement \w, qui correspond à une lettre selon la locale courante.
Ainsi, ceci va bien retourner “l’écran” (si la locale fr_FR est bien installée) :
<?php
$str = "l'écran!!!";
setlocale(LC_ALL, 'fr_FR');
echo preg_replace("`[^\w=']`", '', $str);Mais il est parfois intéressant d’autoriser toutes les lettres, quelque soit la locale courante. Par exemple, rien n’empêche un internaute roumain de rechercher ou de commenter dans sa langue natale sur un site anglais.
Solution pour accepter toutes les lettres, indépendamment de la locale : \p{L} combiné avec l’option u (UTF8)
<?php
echo preg_replace("`[^\p{L}']`u", '', $str);