Bonjour,
Comme expliqué dans le titre je viens de modifier l’encodage, dans son intégralité, d’un site existant. Pas mal de doc et forum sur ce topic moins sur les impacts des regex…
J’ai bien sûre des impacts sur mes regex je voulais savoir si pour pallier ces derniers, je pouvais :
1 ) Une solution simple sans trop d’embêtement.. !?
J’ai pensé modifier l’encodage de mes variables pour appliquer la regex avant de remettre l’unicode du style :
;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $adresse_post = utf8_decode($_POST['adresse']); $pattern = '`[^A-Za-z0-9\'\-,:( )&çéèêëàâîïôùûÇÉÈÊËÀÂÎÏÔÙÛ]`i'; If (!preg_match($pattern,$ 'adresse'_post)) { } $adresse_post = utf8_encode($adresse_post)
Ou bien
Cela est-il envisageable et pourrait fonctionner ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 adresse_post=iconv("UTF-8","ISO-8859-1",$_POST['adresse']); $pattern = '`[^A-Za-z0-9\'\-,:( )&çéèêëàâîïôùûÇÉÈÊËÀÂÎÏÔÙÛ]`i'; If (!preg_match($pattern,$adcompl_post)) { } $adresse_post=iconv("ISO-8859-1","UTF-8",$adresse_post);
2) Indépendamment de la réponse 1, existe-t-il un moyen « idéal » de modifier la regex pour qu’elle soit comprise sous l’unicode ?
3) Enfin je ne comprends pas pourquoi ma regex fonctionne (fonctionnait donc dans l’encodage latin) qu’à l’envers seulement!? C’est-à-dire que je contrôle que ma variable ne contienne pas l’inverse des caractères listés, qui sont donc les caractères attendus… de telle sorte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $pattern = '`[^A-Za-z0-9\'\-,:( )&çéèêëàâîïôùûÇÉÈÊËÀÂÎÏÔÙÛ]`i'; If (!preg_match($pattern,$ 'adresse'_post)) { }
Alors que je voudrais logiquement contrôler que ma variable contienne seulement les caractères listés dans ma pattern tél que : (je supprime le « ! » au preg_match, ainsi que le « ^ » à l’intérieure de ma classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $pattern = '`[^A-Za-z0-9\'\-,:( )&çéèêëàâîïôùûÇÉÈÊËÀÂÎÏÔÙÛ]`i'; If (!preg_match($pattern,$ 'adresse'_post)) { }
Dans ce cas la pattern ne fonctionne plus… ou que sur le premier caractère.. j’ai alors essayé en ajoutant ^[…]$ ou ^[…]*$ sans succès…
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $pattern = '`[A-Za-z0-9\'\-,:( )&çéèêëàâîïôùûÇÉÈÊËÀÂÎÏÔÙÛ]`i'; If (preg_match($pattern,$ 'adresse'_post)) { }
Je reste dans l’attente de votre aide, je vous remercie !
Partager