Bonjour à tous, comment accepter les accents dans une réécriture d'URL de ce style la :

RewriteRule ^page-([a-zA-Z0-9_\-\%]+)

4 réponses


Salut,

Le mieux c'est de ne pas mettre d'accent dans les URL, c'est une mauvaise pratique

Donc ce que je peux faire par exemple, c´est remplacer les é par des e avant de soumettre le GET a la base de donnée ?

Oui, le mieux est de supprimer tous les accents ou caractères spéciaux. Il doit exister des libs qui font ça, par exemple sur Laravel, on utilise Str::slug pour convertir des chaînes de caractères en slug Je suis un texte avec des caractères spéciaux devient je-suis-un-texte-avec-des-caracteres-speciaux

Salut Toinou, si tu n'utilises pas de framework, cette fonction marche très bien pour slugifier des chaines de caractères :

function slugify($string, $delimiter = '-'){
        $oldLocale = setlocale(LC_ALL, '0');
        setlocale(LC_ALL, 'en_US.UTF-8');
        $slug = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
        $slug = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $slug);
        $slug = strtolower($slug);
        $slug = preg_replace("/[\/_|+ -]+/", $delimiter, $slug);
        $slug = trim($slug, $delimiter);
        setlocale(LC_ALL, $oldLocale);
        return $slug;
    }