[php] regex PCRE avec une apostrophe

Fermé
sanjuan Messages postés 89 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 6 avril 2014 - 7 juin 2007 à 03:16
sanjuan Messages postés 89 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 6 avril 2014 - 9 juin 2007 à 04:44
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
A voir également:

1 réponse

Bizarre.

Faudrait voir l'expression régulière.
0
sanjuan Messages postés 89 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 6 avril 2014 1
8 juin 2007 à 06:38
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 marche
function 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.
0
sanjuan Messages postés 89 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 6 avril 2014 1
9 juin 2007 à 04:44
il y avait une erreur dans le message, le nom de l'argument n'etait pas le même entre le () et les {}
c'est
function 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.
0