Programmation PHP/Expressions rationnelles

Un livre de Wikilivres.
Aller à : navigation, rechercher


Syntaxe[modifier | modifier le wikicode]

Expressions rationnelles courantes
Caractère Type Explication
. Point n'importe quel caractère
[...] classe de caractères tous les caractères énumérés dans la classe
[^...] classe complémentée Tous les caractères sauf ceux énumérés
^ circonflexe marque le début de la chaine, la ligne...
$ dollar marque la fin d'une chaine, ligne...
| barre verticale alternative - ou reconnaît l'un ou l'autre
(...) parenthèse utilisée pour limiter la portée d'un masque ou de l'alternative
* astérisque 0, 1 ou plusieurs occurrences
+ le plus 1 ou plusieurs occurrence
 ? interrogation 0 ou 1 occurrence
  • ?! : négation (ex : '#^((?!sous-chaine_exclue).)#').
  • $1 : résultat du premier groupe de capture.
  • ?: : ignorer le groupe de capture lors de leur numérotation.
Classe Prédéfinie
Classe Signification
[[:alpha:]] n'importe quelle lettre
[[:digit:]] n'importe quel chiffre
[[:xdigit:]] caractères héxadécimaux
[[:alnum:]] n'importe quelle lettre ou chiffre
[[:space:]] n'importe quel espace blanc
[[:punct:]] n'importe quel signe de ponctuation
[[:lower:]] n'importe quelle lettre en minuscule
[[:upper:]] n'importe quelle lettre capitale
[[:blank:]] espace ou tabulation
[[:graph:]] caractères affichables et imprimables
[[:cntrl:]] caractères d'échappement
[[:print:]] caractères imprimables exceptés ceux de contrôle

En plus de ces classes prédéfinies, les propriétés Unicode sont aussi prédéfinies.

Recherche[modifier | modifier le wikicode]

La fonction preg_match demande deux paramètres : l'expression rationnelle et la chaine à scanner.

<?php
$chaine="Test regex PHP pour Wikibooks francophone.";

if(preg_match('`.*Wikibooks.*`',$chaine)) {
	print("Le texte parle de Wikibooks");
} else {
	print("Le texte ne parle pas de Wikibooks"); 
}
?>

Pour obtenir tous les résultats dans un tableau, remplacer preg_match par preg_match_all[1], et print par print_r.

link={{{link}}}
Attention !

Le regex PHP doit toujours être entouré d'un symbole délimiteur, dans notre exemple c'est ` mais on utilise aussi souvent / et #.

link={{{link}}}
Attention !

Pour chercher un dollar, "\$" ne fonctionne pas car c'est le format de certaines variables, utiliser donc des apostrophes au lieu des guillemets : '\$'.

Remplacement[modifier | modifier le wikicode]

La fonction preg_replace comprend trois paramètres : remplacé, remplaçant, chaine à traiter.

<?php
// Remplace tous les espaces par des underscores
$chaine="Test regex PHP pour Wikibooks francophone.";
$chaineTriee=preg_replace('`( )`','_',$chaine);
echo $chaineTriee;
?>

Références[modifier | modifier le wikicode]