Les expressions régulières
Les expressions régulières permettent de manipuler les chaînes de caractère.Elles permettent en fait d'obtenir des informations sur lesdites chaîntes.

: les expressions régulières sont aussi appelées regex.

Voici la liste des différentes fonctions.

preg_match

preg_match est utilisé pour vérifier si un ou plusieurs caractères se trouvent bien dans la chaîne. Voici sa syntaxe:

preg_match('masque';'chaîne');

chaîne représente bien entendu la chaîne de caractères et masque représente l'expression régulière. Nous verrons plus tard les différentes valeurs que peut prendre le masque. Pour l'instant, sachez que le masque peut contenir un mot.
Voici un exemple qui va vérifier si un mot se trouve bien dans une chaîne de caractères:

$mon_texte="Le site theprogrammeur est le meilleur site sur la programmation.";
if(preg_match('`theprogrammeur`',$mon_texte)){
echo"ce mot fait partie de la chaîne de caractères";
}
else{
echo"Ce mot ne fait pas partie de la chaîne de caractères";
}
?>

Voici le résultat:
Exemple sur les chaînes de caractères

-le mot doit être mis entre "`". Ce caractère se trouve près du "Enter".
-preg_match(); est case sensitive.

Si vous tapez ceci:

<?php
$texte='Le site theprogrammeur est le meilleur site sur la programmation';
if(preg_match('`Theprogrammeur`',$texte){
echo'Ce mot se trouve dans la variable';
}<
else{
echo'Ce mot ne se trouve pas dans la variable';
}
?>

C'est else qui s'exécutera car le mot "Theprogrammeur" ne se trouve pas dans la variable. Pour que la fonction preg_match(); ne soit pas case sensitive, il suffit de rajouter la lettre i. Reprenons l'exemple précédent en le modifiant un peu:

<?php
$texte='Le site theprogrammeur est le meilleur site sur la programmation';
if(preg_match('`Theprogrammeur`i',$texte){
echo"ce mot se trouve dans la variable";
}<
else{
echo"Ce mot ne se trouve pas dans la variable";
}
?>

Dans cet exemple, c'est if qui sera exécuté car le mot "theprogrammeur" se trouve bien dans la variable texte.

: le caractère "|" signifie "OU".

Voici un tableau d'explications pour que vous comprenniez mieux.
ChaîneRegexRésultatCommentaire
J'adore la programmation HTML`html`FAUXla fonction EST case sensitive
J'adore la programmation HTML`htmlìVRAIla fonction N'est PAS case sensitive
Mon langage de programmation préféré est le Javascriptlangage|javascriptVRAIun des deux mots se trouve dans la chaîne
Vive le site theprogrammeur`vive|site`iVRAIla fonction N'est PAS case sensitive
Vive le site theprogrammeur`programmation|Site`FAUXaucun des deux mots ne se trouve dans la variable parce que la fonction EST case sensitive

Début et fin de chaîne


Les expressions régulières permettent aussi de savoir si une chaîne commence par une certaine lettre et se termine par une autre. Par exemple, on pourrai demander:"Est-ce que la cahîne commence par un A et fini par un Z? ".
Le PHP utilise certains symboles pour désigner le début et la fin de la chaîne:
^début de la chaîne
$fin de la chaîne
Voici quelques exemples:
ChaîneRegexRésultatCommentaire
theprogrammeur`^t`VRAIla chaîne commence bien par "t"
theprogrammeur`s$`FAUXla chaîne ne se termine pas par "s"
Bienvenue sur ce site`^Be$`FAUXla chaîne est différente de "Be"
Bienvenue sur ce site`^Bienvenue sur ce site$`VRAIla chaîne est identique

Voici d'autres symboles pouvant être utilisées dans les regex.
?0 ou 1 maximum
+1 ou plus
*0, 1 ou plus
Voici d'autres exemples pour une meilleure compréhension:
ChaîneRegexRésultatCommentaire
site`si?te`VRAIil y a 0 ou 1 "i"
site`si+te`VRAIil y a bien minimum 1 "i"
siiite`si?te`FAUXil y a plus d'1 "i"
siiite`si*te`VRAIil y a bien 0, 1 ou plus d'1 "i"

On peut décider exactemet combien de fois la lettre doit être présente dans la chaîne de caractères:
{x} la lettre doit être répètée x fois.
{x,y} la lettre doit être répètée de x à y fois
{x,} la lettre doit être présente minimum x fois mais il n'y a pas de limite aux nombres de fois

Voici un tableau d'exemples, comme d'habitude:
ChaîneRegexRésultatCommentaire
theprogrammeur`theprogram{2}eur`VRAILa lettre est bien présente deux fois
theprogrammeur`theprogram{0,3}eur`VRAILa lettre est répetée de 0 à 3 fois
theprogrammeur`theprogram{3,}eur`FAUXLa lettre n'est pas répetée minimum trois fois

Voici d'autres classes:
`[xy]` x OU y
`[a-z]` lettre minuscule allant de a à z
`[0-9]` chiffre allant de 0 à 9
`[A-Z]` lettre majuscule allant de A à Z
`[a-z0-9]` lettre minuscule OU chiffre

: le signe ^ placé avant une classe est une inderdiction

Voici quelques exemples, toujours sous forme de tableaux:
ChaîneRegexRésultatCommentaire
theprogrammeur`[a-z]*`VRAIla chaine commence bien par une lettre minuscule
theprogrammeur`[A-Z]*`FAUXla chaîne ne commence pas par une majuscule
theprogrammeur`[a-z0-9]*`VRAIla chaine commence bien par une lettre minuscule ou un chiffre
theprogrammeur`[A-Z]*i`VRAIla chaîne commence bien par une lettre

Voici maintenant la liste de quelques calsses fort spéciales puisqu'elles sont comprises entre deux crochets:
[[:alpha:]]toutes les lettres
[[:lower:]]toutes les lettres minuscules
[[:upper:]]toutes les lettres majuscules
[[:allumn:]]toutes les lettre et les chiffres
[[:punct:]]tout les signes de ponctuation
[[:space:]]tout les espaces
[[:blank:]]tout les espaces et les tablulations
[[:graph:]]tout les caractères affichables et imprimables
[[:cntrl:]]tout les caractères d'échappement
[[:xdigit:]]tout les caractères hexadécimaux
[[:print:]]tout les caractèes imprimables

: les métacaractères doivent toujours être précédés d'un "\" pour qu'ils soient considérés commes des caractères et pas comme du texte. ([,],!,(,),{,},^,$,?,.,+,*,\,#)


Les classes abrégées


Voici la liste des classes qui permettront de réduire la longueur de vos exepressions régulières:
.n'importe quel caractère
\achiffre de 0 à 9
\Dpas de chiffre de 0 à 9
\sespace
\Spas d'espace
\ttabulation
\nsaut de ligne
\rretour de chariot


preg_replace()



preg_replace est une fonction permettant de remplacer certains mots d'une chaine de caractères par d'autres.
Cette fonction va permettre de "capturer" une partie de la chaine de caractères.
Petite explication: J'ai cette chaîne de carctères: "J'aime [gras]le chocolat[/gras]". preg_replace va permettre de "capturer" tout ce qui se trouve entre les balises "[gras]".
Elle va stocker ce bout de chaine dans une variable nommée $0. Si vous faites plusieurs captures, la fonction va stocker dans $0 puis $1, $2,...
Nous pourrons donc dire à la fonction de remplacer $0 par un texte de notre cru. Dans l'exemple ci-dessus, il faut remplacer [gras] par <b> et [/gras] par </b> mais avant transformer cette chaine, voici la syntaxe de la fonction preg_replace():

$variable = preg_replace('#symbole(.+)symbole#i', '\[symbole\]$0\[/symbole\]', $variable);

$variable représente la variable qui contient le texte. Dans l'exemple, on "capture" tout le texte compris entre les mots "symbole" et on "encapsule" cette variable entre "[symbole]". Si on demande d'afficher la variable après le passage dans la fonction, voici ce qui s'affichera:
...le texte....[symbole]texte compris entre les deux mots symbole [/symbole]...la suite du texte...

Pour remplacer les deux "[gras]", nous ferons donc ceci:

$variable = preg_replace('#\[gras\](.+)\[/gras\]#i', '&lt;b&gt;$o&lt;/b&gt;', $variable);

Pourquoi as-tu mis des antislashes devant les crochets?
Pour ne pas que la fonction les confonde avec des classes de caractères, ce qui serait regrettable.

:-le symbole "#" à le même effet que "`". Vous pouvez utiliser celui que vous désirez.
-on utilise "isU" plutôt que "i" car "isU" permet de dire à la fonction de s'arrêter à la première balise [/gras] qu'elle trouve. En utilisant "i", la fonction aurait tout mis en gras jusqu'à la dernière balise [/gras]

Pour utiliser preg_replace, on est obligé que le texte à transformé soit entouré par deux balises? Oui, car c'est le plus simple. Mais il existe une autre fonction qui permet de remplacer un seul mot ou une expression dans une phrase:str_replace();. Voici la syntaxe de cette fonction:

str_replace("mot a remplacer", "remplcement", "chaîne");

Exemple:
Vous avez cette phrase: "La tortue avance lentement.". Nous utilisons str_replace pour changer la phrase:

str_replace("lentement", "rapidement", "La tortue avance lentement");

La fonction renverra ceci: "La tortue avance rapidement.".

Cette fonction est utilisée pour remplacer le code des smilleys par la balise image dans le BBcode.


   

Creative Commons License
Sauf mention contraire, le contenu de cette page est sous licence Creative Commons
Page générée en 0.3448 secondes.
Retour en haut de la page
Imprimer cette page