Pb avec une expression régulière sous PHP

JérômeZ -  
nEm3sis Messages postés 710 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

ce post s'adresse à des pros des expressions régulières sous PHP.

J'utilise pour un site associatif un framework (CodeIgniter) qui filtre les chaines de caractères en entrée.

Problème :

$str = "Jérôme";

// La ligne suivante (1) renvoie NULL
$str = preg_replace('#(&\#*\w+)[\x00-\x20]+;#u','\\1;',$str);

// alors que celle-ci (2) renvoie "Jérôme"
$str = preg_replace('#(&\#*\w+)[\x00-\x20]+;#U','\\1;',$str);

La ligne 1 fonctionnait avec le précédent serveur (Apache 2.0.58, PHP 5.1.4, le tout sous Debian Sarge) mais ne fonctionne plus sur le serveur actuel (Apache 2.2.3, PHP 5.2.0 sous Debian Etch)

Etant beaucoup, beaucoup plus à l'aise avec Visual Studio, je sèche un peu sur l'explication et l'interprétation de ces lignes de code tout en m'estimant déjà assez content d'avoir pu trouver le bug.

Reste à comprendre la différence en raison des implications potentielles de cette modification (liée à XSS Prevention)

Et là, c'est à vous de jouer !! :-)

Merci d'avance

@ tchaw
Jérôme
A voir également:

2 réponses

JérômeZ
 
Pas de réponse ???

Surprenant !!

@ tchaw
Jérôme
0
nEm3sis Messages postés 710 Date d'inscription   Statut Membre Dernière intervention   113
 
je m'y connais quasiment pas mais
http://www.expreg.com/options.php
u et U ça a l'air différent
0