FONCTION DE CONTROLE DE LA VALIDITÉ DES CARACTERES D'UNE CHAINE

Signaler
-
Messages postés
487
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/12796-fonction-de-controle-de-la-validite-des-caracteres-d-une-chaine

Messages postés
487
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
487
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");
}