Fonction de controle de la validité des caracteres d'une chaine

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 401 fois - Téléchargée 30 fois

Contenu du snippet

Cette fonction controle si les caracteres de votre chaine sont valide , la validité se fait en focntion d'une chaine contenant tous les caracteres valides , si la chaine envoyé a la focntion contient au moins un caractere non valide , elle renvois FALSE , sinon TRUE ...

Source / Exemple :


function TestString($text) {

	$validchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_";
	
	$longueurtext = strlen($text);
	
	for ($i=0;$i<$longueurtext;$i++) {
		$lettre = substr($text,$i,1);

		$pos = strpos($validchars, $lettre);
		
		if ($pos === FALSE) {
			return false;
		}
	}
	
	return true;

}

Conclusion :


get fun !=

A voir également

Ajouter un commentaire

Commentaires

Messages postés
494
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

Autant dire que je suis un gros nul, car je ne connaissais pas l'existance de "===". donc je retire ma remarque du précédent post.
Désolé
Messages postés
494
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

pour moi qui ai du mal à comprendre les expressions régulière, je trouve que le script proposé a une certaine élégence. Avec un bon vieu gout de c++. Par contre, "(if $pos === FALSE)" ne doit pas souvent fonctionner car les test logique se font avec seulement deux signes "égale". De plus, je trouve que tu aurais pu inclure les caractères valides en tant que paramètre d'appel de ta fonction.
function TestString($text, $validchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_") {


$longueurtext = strlen($text);

for ($i=0;$i<$longueurtext;$i++) {
$lettre = substr($text,$i,1);

$pos = strpos($validchars, $lettre);

if ($pos == FALSE) {
return false;
}
}

return true;

}

Allez, je mets 8.
Messages postés
147
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
28 janvier 2008

olivierv a completement raison, c'est bocoup + simple avec la fonction php ereg( ) qui controle les caractere d'une chaine, tu peux facilement paramétré les caracteres autoriser, il existe aussi la fonction eregi( ) qui est la meme fonction que ereg( ) mais qui ne se soucie pas de la casse:

if (eregi( "[^a-zA-Z_-]+", $text) )
{
echo " erreur de caractere.... ";
}

C'est ainsi kon maitrise les email (nom@serv.fr par ex), num de tel (10 chiffres unikement), adresse, et tout autres parametre POSTER......
on peut simplifier ton script :


remplaces
$lettre = substr($text,$i,1);

par
$lettre = $text[$i];

esayyes tu verras ca marche
Y'a beaucoup plus simple grace aux expressions regulieres:

if (ereg( "[^a-zA-Z_-]+", $NOM, $regs) ) {
print ("erreur");
}

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.