Page 1 sur 1

espace jamais retrouvé dans une chaine de caractère.

Posté : 08 avr. 2010, 19:16
par JeanJean
Bonsoir,

Dans un fonction vérification des pseudos des membres je souhaite inclure un script qui détecte si l'utilisateur à mentionné des caractères interdit dans son pseudo.

Le code ressemble à ça :
			$caractere_interdit[1] = ' ';
			$caractere_interdit[2] = ',';
			$caractere_interdit[3] = ';';
			$caractere_interdit[4] = '.';
			$caractere_interdit[5] = '/';
			$caractere_interdit[6] = '?';
			
			foreach($caractere_interdit AS $traitement){
				if(strpos($pseudo,$traitement) == true){
					$erreur .= '- Votre pseudo ne doit pas contenir d\'espace, ni de "," de ";", de ".", de "/" ou encore "?"';
					return $erreur;				
				}
			}
Il fonctionne à peu prêt.

Si je test avec ça : a a. Le message d'erreur est bien visible mais si jamais j'entre seulement un espace dans le champ pseudo, le pseudo est considéré comme bon.

Une idée ?

Re: espace jamais retrouvé dans une chaine de caractère.

Posté : 08 avr. 2010, 19:40
par Calimero
Hello,

La réponse est dans le manuel : http://fr.php.net/strpos (le gros rectangle rouge dans la page)

Re: espace jamais retrouvé dans une chaine de caractère.

Posté : 08 avr. 2010, 19:53
par JeanJean
J'ai oublié de précisé.

Quand j'ai mis === au lieu de == a aucun moment la fonction me retourne une erreur. :/

Re: espace jamais retrouvé dans une chaine de caractère.

Posté : 08 avr. 2010, 20:01
par Calimero
J'ai oublié de précisé.

Quand j'ai mis === au lieu de == a aucun moment la fonction me retourne une erreur. :/
Oui, parcequ'à aucun moment on ne t'a recommandé de comparer la valeur de retour de strpos() à true, ça n'a pas de sens ;-)

strpos retourne un chiffre (pouvant être un 0) quand l'objet de la recherche a été trouvé, ou FALSE sinon. Tu peux t'insipirer des exemples de la page de manuel donnée en lien, qui présentent deux façons différentes d'utiliser strpos() correctement.

Re: espace jamais retrouvé dans une chaine de caractère.

Posté : 08 avr. 2010, 20:20
par devlop78
if(strpos($pseudo,$traitement) !== false){

Le mieux reste pour ce genre de choses de préciser les caractères autorisés et non interdits

Re: espace jamais retrouvé dans une chaine de caractère.

Posté : 08 avr. 2010, 20:43
par stealth35
t'embête pas a faire une boucle, tu fais un str_replace avec un condition apres
if(str_replace($caractere_interdit, null, $pseudo) !== $pseudo)
{
   //erreur
}

Re: espace jamais retrouvé dans une chaine de caractère.

Posté : 08 avr. 2010, 21:11
par JeanJean
Problème résolue :
			foreach($caractere_interdit AS $traitement){
				if(strpos($pseudo,$traitement) !== false){
					$erreur .= '- Votre pseudo ne doit pas contenir d\'espace, ni de "," de ";", de ".", de "/" ou encore "?"';
					return $erreur;				
				}
			}
Merci a vous pour votre réactivité ! :D