[php] regex PCRE avec une apostrophe

sanjuan Messages postés 89 Date d'inscription   Statut Membre Dernière intervention   -  
sanjuan Messages postés 89 Date d'inscription   Statut Membre Dernière intervention   -
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

lapin tordu
 
Bizarre.

Faudrait voir l'expression régulière.
0
sanjuan Messages postés 89 Date d'inscription   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   1
 
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