J'essaie de trouver une fonction qui fasse un bon travail d'assainissement de certaines chaînes de caractères afin qu'elles puissent être utilisées en toute sécurité dans l'URL (comme le slug d'un article) et également en toute sécurité comme noms de fichiers. Par exemple, lorsque quelqu'un télécharge un fichier, je veux m'assurer que je supprime tous les caractères dangereux du nom.
Jusqu'à présent, j'ai mis au point la fonction suivante qui, je l'espère, résoudra ce problème et autorisera également les données étrangères UTF-8.
/**
* Convert a string to the file/URL safe "slug" form
*
* @param string $string the string to clean
* @param bool $is_filename TRUE will allow additional filename characters
* @return string
*/
function sanitize($string = '', $is_filename = FALSE)
{
// Replace all weird characters with dashes
$string = preg_replace('/[^\w\-'. ($is_filename ? '~_\.' : ''). ']+/u', '-', $string);
// Only allow one dash separator at a time (and make string lowercase)
return mb_strtolower(preg_replace('/--+/u', '-', $string), 'UTF-8');
}
Est-ce que quelqu'un a des données d'échantillon délicates que je peux comparer à ces données ou connaît-il un meilleur moyen de protéger nos applications des mauvais noms ?
$is-filename permet quelques caractères supplémentaires, comme les fichiers vim temporaires.
mise à jour : suppression du caractère étoile car je n'ai pas trouvé d'utilisation valide