Les
fonctions POSIX sont ereg(), ereg_replace(),
eregi(), eregi_replace(),
split(), spliti()
et sql_regcase(). Le "i"
à la fin de certaines fonctions signifie simplement que ces
fonctions ne sont pas sensibles à la casse (la fonction ne
fait pas la différence entre "a" et "A",
par exemple). Florilège introductif de quelques unes de leurs
possibilités.
ereg()
et consoeurs
ereg()
est la fonction standard: elle permet de tester la présence
d'un ou plusieurs caractères dans une chaîne donnée.
Ainsi,
ereg("^_{1}[A-Z]{1}[0-9]{3}$",
$chaîne)
...renverra "TRUE" si
$chaine contient effectivement une
chaîne correspondant au motif que nous avons décrit
plus haut. Il ne reste qu'à l'implémenter dans une
structure de notre choix. Ainsi, créez une fonction is_mail()
qui va nous dire si la chaîne donné est un mail valide
syntaxiquement:
<?php
function is_mail($chaine)
{
return eregi('^[a-z0-9\._-]+@[a-z0-9\.-]+\.[a-z]{2,3}$',
$chaine);
}
?>
[a-z0-9\._-]+ nous indique qu'avant
l'arobase (@), nous acceptons un
nombre illimité (à cause de l'usage de "+")
de caractères alphanumériques (lettres et chiffres),
et les caractères ".",
"_" et "-".
Idem pour la première partie du nom de domaine, l'extension
étant pour sa part limitée à 2 à 3 caractères.
ereg_replace() et eregi_replace()
poussent la technique un peu plus loin: au lieu de dire si un motif
donné est trouvé dans une chaîne, elles remplacent
dans la chaîne les occurrences du motif, par un caractère
ou une chaîne donné en deuxième argument de
la fonction:
<?php
$chaine = "Il y a
trop d'espaces !";
$var = eregi_replace(" +", " ", $chaine);
echo $var;
?>
split(), spliti() et sql_regcase()
Ce sont là des fonctions beaucoup plus spécifiques:
split() et spliti()
décomposent une chaîne en plusieurs sous-chaînes
stockées dans un tableau. Ainsi, pour mettre chaque mot d'une
chaîne dans un tableau:
<?php
$chaine = split(" ", "Je ne sais pas quoi dire");
?>
sql_regcase(),
enfin, "prépare une expression régulière pour effectuer une
recherche insensible à la casse", c'est à dire qu'elle
construit une expression régulière qui acceptera une
motif correspondant à la chaîne spécifiée.
Par exemple, pour lancer une recherche sur une base sans avoir à
se soucier des accents ni dans la chaîne à chercher,
ni dans la base stockée:
<?php
$recherche = sql_regcase($chaine);
$recherche = ereg_replace("eéèêë", "e", $chaine);
$requetesql = "SELECT mot FROM table WHERE champ REGEXP '$recherche';");
?>
Page 1 | 2
|