preg_match (string $pattern, string $subject [, array &$matches [, int $flags [, int $offset ]]])
preg_match() analyse par expression rationnelle la chaîne subject en recherchant l'expression qui correspond à pattern.
preg_match() retourne le nombre de fois où le masque pattern a été trouvé. Cela peut aller de 0 (pas de solution) à un 1 car preg_match() s'arrête dès qu'elle a trouvé une première solution.
preg_match_all(), au contraire, va continuer jusqu'à la fin de la chaîne subject.
preg_match() retourne FALSE si une erreur survient.
N'utilisez pas preg_match() si vous voulez uniquement savoir si une chaîne est contenue dans une autre.
Utilisez dans ce cas les fonctions strpos() ou strstr(), qui sont beaucoup plus rapides.
Dans cet exemple, on recherche la patterns entre "/" et "/" et l'on retourne la valeur "1" si trouvé.
<?php $subject = "Ceci est un test."; echo preg_match( "/ceci/i", $subject ); // Le "i" après le délimiteur du pattern indique que la recherche // ne sera pas sensible à la casse ?>
Ce qui retourne :
1
Autre exemple, pour trouver et lire un nom de domaine dans une URL.
<?php
// Repérer le nom de l'hôte dans l'URL
$subject = "http://www.webelix.net/index.html";
preg_match('@^(?:http://)?([^/]+)@i', $subject, $matches);
// Repérer les deux derniers segments du nom de l'hôte
$host = $matches[1];
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "Le nom de domaine est : {$matches[0]}\n";
?>
Ce qui retourne :
Le nom de domaine est : webelix.net