Introduction aux expressions régulières en PHP
Les expressions régulières sont des commandes pour des recherches et des remplacements complexes. Elles permettent de faire des choses très intéressantes, mais, malheureusement, sont assez difficiles à maîtriser.
Il existe plusieurs fonctions PHP pour travailler
avec les expressions régulières. Nous commencerons à nous familiariser
avec elles sur l'exemple de preg_replace. Cette
fonction prend comme premier paramètre quoi remplacer,
et comme deuxième - par quoi remplacer, et comme troisième paramètre
- la chaîne dans laquelle il faut remplacer :
<?php
preg_replace(quoi remplacer, par quoi, chaîne);
?>
En même temps, notre fonction accepte comme premier paramètre
non pas simplement une chaîne, mais une expression régulière,
représentant une chaîne avec un ensemble de commandes,
placées à l'intérieur des caractères dièse #.
Ces dièses sont appelés délimiteurs
des expressions régulières.
Après les délimiteurs, on peut écrire des modificateurs - des commandes qui modifient les propriétés générales de l'expression régulière.
Les expressions régulières elles-mêmes sont constituées de deux type de caractères : ceux qui désignent eux-mêmes et les caractères de commande, qui sont appelés caractères spéciaux.
Les lettres et les chiffres désignent eux-mêmes. Dans l'exemple
suivant, nous utiliserons une expression régulière
pour remplacer la lettre 'a' par '!' :
<?php
preg_replace('#a#', '!', 'bab'); // retournera 'b!b'
?>
Alors que le point est un caractère spécial
et désigne n'importe quel caractère. Dans l'exemple
suivant, nous trouverons une chaîne selon ce modèle :
lettre 'x', puis n'importe quel caractère, puis
à nouveau la lettre 'x' :
<?php
preg_replace('#x.x#', '!', 'xax eee'); // retournera '! eee'
?>
Soit la chaîne :
<?php
$str = 'ahb acb aeb aeeb adcb axeb';
?>
Écrivez une expression régulière qui trouvera les chaînes
'ahb', 'acb', 'aeb'
selon le modèle : lettre 'a', n'importe quel caractère,
lettre 'b'.
Soit la chaîne :
<?php
$str = 'ahb acb aeb aeeb adcb axeb';
?>
Écrivez une expression régulière qui trouvera les chaînes
'aeeb', 'adcb', 'axeb'
selon le modèle : lettre 'a', deux n'importe quels
caractères, lettre 'b'.