[php] regex PCRE avec une apostrophe
sanjuan
Messages postés
91
Statut
Membre
-
sanjuan Messages postés 91 Statut Membre -
sanjuan Messages postés 91 Statut Membre -
je n'arrive pas a faire accepter une apostrophe
si la regex est inclue entre deux guillemet simples et que j'echappe l'apostrophe, ça marche pas.
si la regex est inclu entre deux guillemets doubles, sans échapper l'apostrophe, il y a un message d'erreur à cause des guillemets doubles.
la regex est defini à l'interieur d'une classe, si elle ne l'est pas, je n'ai pas de problémes avec les guillemets doubles.
merci d'avance pour vos lumiéres
si la regex est inclue entre deux guillemet simples et que j'echappe l'apostrophe, ça marche pas.
si la regex est inclu entre deux guillemets doubles, sans échapper l'apostrophe, il y a un message d'erreur à cause des guillemets doubles.
la regex est defini à l'interieur d'une classe, si elle ne l'est pas, je n'ai pas de problémes avec les guillemets doubles.
merci d'avance pour vos lumiéres
Configuration: Linux Suse Firefox 2.0.0.2
1 réponse
-
-
Bonjour et merci pour la réponse
voici:'/^[ a-zA-Zéèêôâîûäüöëï]+([ \'-]?[ a-zA-Zéèêôâîûäüöëï]+){0,2}$/i';
mais on peut utiliser une forme plus simple comme exemple, celle-ci , le probléme est le même'/^[ a-zA-Zéèêôâîûäüöëï\'-]+$/i';
si elle est defini comme ça à l'intérieur d'une classe ça marche pour par exemple "d'artagnan"
par contre si "d'artagnan" est dans un $_POST ça ne marche pas, magic_quotes_gpc, etant à ON dans le php.ini, j'ai éssayé stripslashes() sur le $_POST avant de le comparer au modéle, mais ça ne marche pas non plu.
d'autres part si le modéle est défini dans une simple fonction (pas dans une classe), je n'echappe pas l'apostrophe et je n'ai pas de message d'erreur pour les guillemets ouvrant/fermant. et ça marchefunction valid($nom) {if( !preg_match("/^[ a-zA-Zéèêôâîûäüöëï]+(['-]?[ a-zA-Zéèêôâîûäüöëï]+){0,2}$/i", $adress) ){ return false;} return true; } echo valid("D'artagnan");
je n'ai pas éssayé la simple fonction aprés un post. -
il y avait une erreur dans le message, le nom de l'argument n'etait pas le même entre le () et les {}
c'estfunction valid($nom) {if( !preg_match("/^[ a-zA-Zéèêôâîûäüöëï]+(['-]?[ a-zA-Zéèêôâîûäüöëï]+){0,2}$/i", $nom) ){ return false;} return true; } echo valid("D'artagnan");
d'autres part j'ai essayé le post avec magic_quotes_gpc=off; ça ne change rien.
-