Modérateur PHPfrance |
8758 Messages
01 mars 2017, 10:48
salut,
si tu change l'encodage dans la callback tu as moins de soucis, (iso-8859-1 ou iso-8859-15 produise ce que tu veux sauf que le é reste en minuscule).
par contre dans ton cas je vois pas bien pourquoi tu ne fais pas directement mb_strtoupper($test,'utf-8'); qui devrais revenir au même.
sachant que \w ne semble pas comprendre les caractères accentués ([a-zA-Z] et n'oublions pas que c'est fait par des gens qui n'utilisent pas d'accents cela se comprend).
tu peux tester ton masque et ta chaîne la
https://regex101.com/r/nN4fE3/30
si tu places un echo / var_dump dans la callback tu verras bien que l'expression régulière donnes plus de mot que tu ne crois
Code : Tout sélectionner
string 'Voici' (length=5)
string 'des' (length=3)
string 'caract�' (length=7)
string 'res' (length=3)
string 'accentu�' (length=8)
string 's' (length=1)
donc sans info sur le contexte je te dirais d'utiliser mb_strtoupper($test,'utf-8'); ce sera de toute façon plus efficace.
@+
Il en faut peu pour être heureux ......