Tutorial #2 fonctions ereg & ereg_replace

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 092 fois - Téléchargée 28 fois

Contenu du snippet

bon dans le tutorial 1 on a vu des trucs déjà assez compliqué. maintenant on va faire plus simple. j'ai deux chaînes :

$ch1 = "les oiseaux gazouillent";
$ch2 = "les oeufs sont durs";

comment je peux faire si je veux vérifier qu'il n'y a que des lettres et des espaces dans $ch1 ?
comme ça : $réponse = ereg("^[a-zA-Z ]*$",$ch1);

déjà en mettant un ^au début et un $ à la fin, cela signifie qu'on recherche du début à la fin de $ch1.
  • signifie donc qu'on recherche le maximum de "tant que le crochet est vrai" dans $ch1.

le crochet signifie que l'on recherche tout caractère compris entre a et z (a-z), entre A et Z (A-Z) ou qui soit un espace ( ).

ce ereg là commence par vérifier que le premier caractère est soit une lettre, soit un espace. si c'est le cas, il vérifie avec la seconde lettre et ainsi de suite jusqu'à la fin. imaginons que $ch1 contienne un "?", alors quand le ereg va vérifier que ce caractère est une lettre ou un espace, le résultat va être négatif et comme on aura pas atteint la fin de $ch1, ereg retournera FALSE.

autres exemple :

ereg("^([A-Za-z ]{2,6})",$ch2,$sortie);
vérifie qu'au moins les deux premières lettres de la chaîne $ch2 sont soit des lettres soit un espace mais si les 2 à 6 premiers caractères sont de ce type, alors $sortie[1] retourne ces n premiers caractères.
ici $sortie[1] vaut "les oe";

ereg("^[A-Z]{1}",$ch1); vérifie que la première lettre de $ch1 est une majuscule.

ereg("[a-zA-Z]{6,}",$ch1) vérifie qu'il existe au moins un mot sans accent d'au moins 6 lettres dans la chaîne $ch1
ereg("[a-zA-Z]{6,}",$ch1) = eregi("[a-z]{6,}",$ch1)

ereg(" [^e]+ ",$ch1); vérifie qu'il existe au moins un bloc de caractères (bloc = ensemble de caractères séparés par les autres blocs d'un espace) qui ne contient pas de "e".

$ch3 = "http://www.perdu.com/test/test.php
ereg("^http://www\.([^/\.]+)\.([^/\.]+)",$ch3,$sortie);

cet ereg renvoi le domaine en $sortie[1] et l'extension du domaine en $sortie[2].

le ([^/\.]+) signifie que l'on recherche n'importe quoi qui ne soit pas un point ni un slash et qui ait au moins un caractère.

bien sûr, ce ereg là n'est pas parfait et pourrait par exemple considérer T?T{s comme nom de domaine si on entre
$ch3 = "http://www.T?T{s.com/test/test.php";

$sortie(1] = perdu et $sortie[2] = com
attention à bien mettre des antislashs devant les points car un point sans antislash signifie "n'importe quel caractère". exemple :
ereg("^(.*)$",$ch1) retournera toujours TRUE car on recherche n'importe quel caractère du début jusqu'à la fin de la chaîne $ch1.

autres exemples :

ereg("^[^x]*$",$ch1) vérifie qu'il n'y a pas de x dans la chaîne $ch1

ereg("^(.*)\.[a-zA-Z0-9]{1,6}$",$ch4); retourne si $ch4 à une extension qui soit une lettre ou un chiffre et qui ait entre 1 et 6 caractère,
si $ch4 = "test.php" retourne TRUE
si $ch4 = ".htaccess" retourne FALSE car htaccess ) plus de 6 lettres.

ereg("(.*)\.([^\.]+)",$ch4,$sortie) vérifie si le nom de fichier $ch4 possède une extension et si c'est le cas retourne le nom du fichier en sortie[1] et l'extension en $sortie[2]
$ch4 = "glou.glou.txt";
$sortie[1] = "glou.glou";
$sortie[2] = "txt";

eregi("^<[/]?([a-z0-9]+)([^>]*)>$",$ch5); vérifie que la chîne est de type balise html et retourne le nom de la balise en sortie[1] et le contenu en sortie[2]. (cette fonction est cependant imparfaite dans certain cas - :-( trouvez pourquoi...)
exemple :
$ch5 = "<a href=bonjour.php>";
$sortie[1] = "a" et $sortie[2] = " href=bonjour.php";

bon voilà c'est fini pour le tutorial #2, si y'a des erreurs ou si j'ai pas été clair, dîtes-le moi... d'autres fonctions et d'autres exemples dans le tutorial #3

Source / Exemple :


// Fin du tutorial

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
13 septembre 2010

je veux verifier ca
1.le premier lettre majusule
2.un espace
3.des nombres decimals
4.espace
5.un lettre miniscule
pou obtenir ca par exemple A 23.45 a
Messages postés
2
Date d'inscription
lundi 18 septembre 2006
Statut
Membre
Dernière intervention
22 février 2007

merci rapidos.
@+
Messages postés
15
Date d'inscription
jeudi 2 janvier 2003
Statut
Membre
Dernière intervention
19 octobre 2007

function validate_email($email){

$exp = "^[a-z\'0-9]+([._-][a-z\'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$";

if(eregi($exp,$email)){

if(checkdnsrr(array_pop(explode("@",$email)),"MX")){
return true;
}else{
return false;
}

}else{

return false;

}
}

tiré de PHP.net (http://fr2.php.net/manual/fr/function.checkdnsrr.php)
Messages postés
2
Date d'inscription
lundi 18 septembre 2006
Statut
Membre
Dernière intervention
22 février 2007

Bonjour,
SVP, je cherche une fonction php qui me permet de verifier si le format d'un email est valid ou non;
merci de vos réponces
Messages postés
115
Date d'inscription
samedi 14 juin 2003
Statut
Membre
Dernière intervention
31 décembre 2009

bonjour , petite question

si je veux verifier que $nom n'ai que des lettres , ou chiffres
que le premier caractere soit une lettre , qu'il n'y ai rien d'autre que ça . ( tt simplement eviter les caractes spécieux et eviter tout ce qui est sql injection et verifier la validité du $nom )
que faudrai il faire

j'ai trouvé ça : function verify_loginname($s) {
/* a-z, A-Z, 0-9 */
return(preg_replace('@[^a-zA-Z0-9]@','',$s));
}

est ce correct ?
Afficher les 10 commentaires

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.