RegExp, UTF8, accents et métaclasses ... tout un programme

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : RegExp, UTF8, accents et métaclasses ... tout un programme

par Mr.Pink » 30 oct. 2008, 17:18

Louée sois tu mere-teresa, l'option "u" a réglée mon problème !

Voilà à quoi ça ressemble avec l'option u, au cas ou d'autres auraient ce probleme :
<?php
$chaine="élephant";
$regexp = "`^[\w]*$`u";
if(preg_match($regexp,$chaine))
	echo 'TRUE';
else
	echo 'FALSE'; 
?>

par mere-teresa » 30 oct. 2008, 15:38

et en remplaçant par [A-za-z] ?

Et avec l'option u ?
http://fr2.php.net/manual/fr/reference. ... ifiers.php

RegExp, UTF8, accents et métaclasses ... tout un programme

par Mr.Pink » 30 oct. 2008, 13:34

Bonjour,

J'ai entrepris de passer un site en UTF8 (auparavant en ISO-8859-1). J'ai donc passé le serveur Apache, les BD MySQL, les fichiers PHP, les entêtes HTML en UTF8 et j'ai configuré l'extension mbstring de php pour traiter les chaines UTF8 de façon transparente.

Mais j'ai un problème avec la validation de mes formulaires et plus généralement avec les expressions régulières.

Voilà un exemple de mon problème.
<?php
//En UTF-8 cet exemple retourne FALSE		
$chaine="éléphant";
$regexp = "`^[\w]*$`";
if(preg_match($regexp,$chaine))
	echo 'TRUE';
else
	echo 'FALSE'; 
?>
Depuis que je suis en UTF8 la métaclasse [\w] n'accepte plus les accents.:evil:

J'ai essayé plusieurs setlocal mais auncun n'a marché :
setlocale(LC_ALL, 'fr.UTF-8');
setlocale(LC_ALL, 'fr.UTF8');
setlocale(LC_ALL, 'fr_FR.UTF-8');
setlocale(LC_ALL, 'fr_FR.UTF8');
Je développe sous WampServer 2.0, Apache 2.2.6, PHP 5.2.5, MySQL 5.0.45.

Une idée peut être ? :roll: