Bonsoir tous le monde,

Je suis en train de faire mes premiers pas avec cakePHP, et je rencontre un problème d'encodage pour mes regex.
Dans mon model User je veux vérifier la validité du nom d'un utilisateur avec un regex personnalisé : '#^[a-z-\s]{1,26}$#i'
Le problème c'est que les accents ne sont pas reconnu, alors qu'habituellement ce regex fonctionne.

Merci pour votre aide,
Daniel

2 réponses


Bonsoir,

J'ai été confronté au même problème il y a peu. J'avais besoin d'enregistrer des noms, donc lettres, y compris accents, tirets et espaces, également avec CakePHP.

J'ai utilisé la regex suivante :

function alphabetic($check) {
        $value = array_values($check);
        $value = $value[0];
        return preg_match('|^[a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ-]*$|', $value);
    }

PS : il y a une fonction dédiée à CakePHP sur le forum.

Daniel68
Auteur

Merci Pakito pour ta réponse.
J'ai cherché une fonction cakePHP dans le cookBook avant de poser ma question, mais j'ai rien trouvé. De quelle fonction dédiée parles-tu?
Sait-tu d'où vient ce problème ? Serait-il lié à une difficulté de manipuler les caractères non-ASCII ?
En faite je ne comprend pas pourquoi cakePHP ne gère pas le regex normalement.
Sinon, je ne vois effectivement pas d'autres moyens que de créer une fonction.