Identifier les accents avec Regex et PHP

Avec PHP, en utilisant le motif \w avec PCRE ([:alpha:] pour POSIX) dans le masque d’une Regex, il est possible que les accents de caractères ne soient pas identifiés sur certaines configurations (comme chez 1and1 par exemple). Il faut alors définir les informations de localisation avec la fonction setlocale(). Plus précisément sur la catégorie LC_CTYPE pour la classification et la conversion de caractères.

Attention le motif [a-z] d’une Regex ne comprend pas les accents.

Exemple :

<?php
setlocale(LC_CTYPE, 'fr_FR','fra'); //Fournit les informations de localisation

$string = 'hétérogénéité'; // chaine contenant des caractères accentués
var_dump(preg_match('#^[\w]+$#u',$string)); //return int(1)
?>

Grâce à la fonction setlocale(), la recherche de caractères accentués avec preg_match() et le motif \w retourne vrai.

David Jovanovic
Fondateur de Lecoindunet et rédacteur à mes heures perdues, ma passion pour l'informatique et mes expériences professionnelles m'ont permis d'acquérir de solides connaissances dans les domaines liés aux nouvelles technologies. En démarrant ma carrière comme technicien, puis en devenant développeur et maintenant chef de projet informatique, je fais de ma polyvalence ma force et m'aspire à partager mes connaissances le web.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici