www.webelix.net

[ PHP ]


Expression rationnelle PREG_MATCH()

Rechercher par expression rationnelle

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.

Exemple avec preg_match()

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