Setlocale escapeshellarg PHP

Petit bug rencontré lors d'un dev, les accents étaient supprimés de ma chaine de caractère après la fonction escapeshellarg().

Sauf que ce n'est pas le comportement normal de cette fonction.

Si j'exécute en mode interactive afin de tester la configuration du PHP, aucun problème, les accents sont bien retournés.

php7.4 -a
Interactive mode enabled
php > print escapeshellarg("Titre accentué");
'Titre accentué'

 

Par contre, dans mon script la même fonction va retourner 'Titre accentu'.

Cela est juste un problème de locale. Ajouter à votre script la définition de la locale afin de résoudre le problème.

<php
setlocale(LC_CTYPE, "fr_FR.UTF-8");
?>