Section courante

A propos

Section administrative du site

PREG_MATCH

Régulière - Correspondance
PHP 4+

Syntaxe

function preg_match($pattern, $subject);
function preg_match($pattern, $subject, $matches);
function preg_match($pattern, $subject, $matches, $flags);
function preg_match($pattern, $subject, $matches, $flags, $offset);

Paramètres

Nom Description
$pattern Ce paramètre permet d'indiquer la chaîne de caractères ou le tableau de recherche.
$subject Ce paramètre permet d'indiquer la chaîne de caractères ou le tableau contenant la source.
$matches Ce paramètre permet de retourner les résultats de recherche.
$flags Ce paramètre permet d'indiquer qu'il faut modifier les sous-chaîne de caractères correspondant au masque si cette option est activé par la constante PREG_OFFSET_CAPTURE.
$offset Ce paramètre permet d'indiquer la position où commence la recherche dans la chaîne de caractères.

Retour

Valeur Description
0 Cette valeur permet d'indiquer qu'il n'y a pas de correspondance trouvé
1 Cette valeur permet d'indiquer qu'il y au moins une correspondance de trouvé
FALSE Cette valeur permet d'indiquer qu'une erreur s'est produite.

Description

Cette fonction permet de rechercher une expressions régulières (regex) spécifié.

Exemples

L'exemple suivant permet de remplacer des routes d'URL par d'autres URL contenu dans un code source HTML :

Essayer maintenant !
  1. <?php
  2. $Content = '<html><body><p>une autre image</p>';
  3. $Content .= '<p><img alt="" src="/share/proxy/services/assets/binary/image/porsche-women-2-1" style="height:330px; width:660px" /></p>';
  4. $Content .= '<p>bla bla bal</p>';
  5. $Content .= '<p> </p>';
  6. $Content .= '<p>aaaabbb<img alt="" src="/share/proxy/services/assets/binary/image/beignes" style="height:154px; width:230px" />ddddeffff</p>';
  7. $Content .= '<p>jshdkjsahd</p>';
  8. $Content .= '<p><img alt="" src="/share/proxy/services/assets/binary/image/gladir-com" style="height:150px; width:150px" /></p>';
  9. $Content .= '</body></html>';
  10.  
  11. $pattern = '$/share/proxy/services/assets/binary/image/([a-zA-Z0-9-]+)$';
  12. preg_match($pattern, $Content, $m);
  13.  
  14. while($m) {
  15.     $replacement = generateRouter($m[0]);
  16.     if($replacement == "") break;
  17.     $Content = str_replace($m[0], $replacement, $Content);
  18.     preg_match($pattern, $Content, $m);
  19. }            
  20. echo $Content;            
  21.       
  22. function generateRouter($url) {
  23.     switch($url) {
  24.         case "/share/proxy/services/assets/binary/image/porsche-women-2-1":
  25.             return "/assets/image/porsche-women-2-1";
  26.         case "/share/proxy/services/assets/binary/image/beignes":
  27.             return "/assets/image/beignes";
  28.         case "/share/proxy/services/assets/binary/image/gladir-com":
  29.             return "/assets/image/gladir-ca";
  30.     }
  31. }
  32. ?>

on obtiendra le résultat suivant :

<html><body><p>une autre image</p>
<p><img alt="" src="/assets/image/porsche-women-2-1" style="height:330px; width:660px" /></p>
<p>bla bla bal</p>
<p> </p>
<p>aaaabbb<img alt="" src="/assets/image/beignes" style="height:154px; width:230px" />ddddeffff</p>
<p>jshdkjsahd</p>
<p><img alt="" src="/assets/image/gladir-ca" style="height:150px; width:150px" /></p>
</body></html>

L'exemple suivant permet de retourner le contenu de la balise «script» avec l'identificateur «gladir-com» :

Essayer maintenant !
  1. <?php
  2. $source = 'DEBUT<script type="text/javascript" id="gladir-com">document.write("gladir.com");</script>FIN';
  3. preg_match('/<script([^>]*)id="gladir-com">(.+?)<\/script>/', $source, $m);
  4. echo $m[2];
  5. ?>

on obtiendra le résultat suivant :

document.write("gladir.com");

L'exemple suivant permet de rechercher le paragraphe après le «<h3>Description</h3>» :

Essayer maintenant !
  1. <?php
  2. $source = "DEBUT<h3>Description</h3>\n<p style=\"\text-align: justify\">Voici la description</p>\nFIN";
  3. preg_match('/<h3>Description<\/h3>[^>]*<p[^>]*>(.*?)<\/p>/i', $source, $m);
  4. echo $m[1];
  5. ?>

on obtiendra le résultat suivant :

Voici la description

L'exemple suivant permet de rechercher le contenu du tableau après le «<h3>Syntaxe</h3>» :

Essayer maintenant !
  1. <?php
  2. $source = "DEBUT<h3>Syntaxe</h3>\n<table class=\"\ListCoder\"><tr><td>function <b>abs</b>(x);</td></tr></table></p><h3>Description</h3>\n<p style=\"\text-align: justify\">Voici la description</p>\n\nFIN";
  3. preg_match('/<h3>Syntaxe<\/h3>[^<]*<table[^>]*>.*?<tr>.*?<td>(.*?)<\/td>.*?<\/tr>.*?<\/table>/i', $source, $m);
  4. echo $m[1];
  5. ?>

on obtiendra le résultat suivant :

function abs(x);

L'exemple suivant permet d'extraire le contenu situé dans la balise «article» :

Essayer maintenant !
  1. <?php
  2. $source = "DEBUT<article class=\"fullinfo\"><h3>Syntaxe</h3>\n<table class=\"\ListCoder\"><tr><td>function <b>abs</b>(x);</td></tr></table></p><h3>Description</h3>\n<p style=\"\text-align: justify\">Voici la description</p>\n</article>\nFIN";
  3. preg_match('/<article[^>]*>(.*?)<\/article>/is', $source, $m);
  4. echo $m[1];
  5. ?>

on obtiendra le résultat suivant :

<h3>Syntaxe</h3>
<table class="\ListCoder"><tr><td>function <b>abs</b>(x);</td></tr></table></p><h3>Description</h3>
<p style=" ext-align: justify">Voici la description</p>

L'exemple suivant permet de vérifier s'il s'agit d'un numéro de téléphone d'Amérique du Nord en utilisant une expression régulière pour créer la fonction «isPhoneNumber» :

  1. <?php
  2. function BooleanToStr($bool) {
  3.     return $bool?'TRUE':'FALSE';
  4. }
  5.  
  6. function isPhoneNumber($phone) {
  7.     return preg_match("/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/", trim($phone));
  8. }
  9.  
  10. echo 'ABC : ', BooleanToStr(isPhoneNumber('ABC')),'<br />';
  11. echo '7777777 : ', BooleanToStr(isPhoneNumber('7777777')),'<br />';
  12. echo '444-5555 : ', BooleanToStr(isPhoneNumber('444-5555')),'<br />';
  13. echo '555-555-X555 : ', BooleanToStr(isPhoneNumber('555-555-X555')),'<br />';
  14. echo '555-555-5555 : ', BooleanToStr(isPhoneNumber('555-555-5555')),'<br />';
  15. ?>

on obtiendra le résultat suivant :

ABC : FALSE
7777777 : FALSE
444-5555 : FALSE
555-555-X555 : FALSE
555-555-5555 : TRUE

L'exemple suivant permet de vérifier des noms de fichiers la présence de fichier avec un extension «.jpg» :

  1. <?php 
  2. echo "preg_match(\"/^.*([A-Z0-9]{2,5})_(2[0-9]{3})([0-1][0-9])([0-3][0-9])(SP[0-9]?)?\.jpg$/\",'/./SM_20190313.jpg')=",preg_match("/^.*([A-Z0-9]{2,5})_(2[0-9]{3})([0-1][0-9])([0-3][0-9])(SP[0-9]?)?\.jpg$/",'/./SM_20190313.jpg',$donnees),"<br />";
  3. echo "preg_match(\"/^.*([A-Z0-9]{2,5})_(2[0-9]{3})([0-1][0-9])([0-3][0-9])(SP[0-9]?)?\.jpg$/\",'/./SM_20190313.jpg')=",preg_match("/^.*([A-Z0-9]{2,5})_(2[0-9]{3})([0-1][0-9])([0-3][0-9])(SP[0-9]?)?\.jpg$/",'SM_20190313.jpg',$donnees),"<br />";
  4. echo "preg_match(\"/^.+([A-Z0-9]{2,5})_(2[0-9]{3})([0-1][0-9])([0-3][0-9])(SP[0-9]?)?\.jpg$/\",'/./SM_20190313.jpg')=",preg_match("/^.+([A-Z0-9]{2,5})_(2[0-9]{3})([0-1][0-9])([0-3][0-9])(SP[0-9]?)?\.jpg$/",'/./SM_20190313.jpg',$donnees),"<br />";
  5. echo "preg_match(\"/^.+([A-Z0-9]{2,5})_(2[0-9]{3})([0-1][0-9])([0-3][0-9])(SP[0-9]?)?\.jpg$/\",'/./SM_20190313.jpg')=",preg_match("/^.+([A-Z0-9]{2,5})_(2[0-9]{3})([0-1][0-9])([0-3][0-9])(SP[0-9]?)?\.jpg$/",'SM_20190313.jpg',$donnees),"<br />";
  6. echo "preg_match(\"/^([A-Z0-9]{2,5})_(2[0-9]{3})([0-1][0-9])([0-3][0-9])(SP[0-9]?)?\.jpg$/\",'/./SM_20190313.jpg')=",preg_match('/^([A-Z0-9]{2,5})_(2[0-9]{3})([0-1][0-9])([0-3][0-9])(SP[0-9]?)?\.jpg$/','SM_20190313.jpg',$donnees),"<br />";
  7. ?>

on obtiendra le résultat suivant :

preg_match("/^.*([A-Z0-9]{2,5})_(2[0-9]{3})([0-1][0-9])([0-3][0-9])(SP[0-9]?)?\.jpg$/",'/./SM_20190313.jpg')=1
preg_match("/^.*([A-Z0-9]{2,5})_(2[0-9]{3})([0-1][0-9])([0-3][0-9])(SP[0-9]?)?\.jpg$/",'/./SM_20190313.jpg')=1
preg_match("/^.+([A-Z0-9]{2,5})_(2[0-9]{3})([0-1][0-9])([0-3][0-9])(SP[0-9]?)?\.jpg$/",'/./SM_20190313.jpg')=1
preg_match("/^.+([A-Z0-9]{2,5})_(2[0-9]{3})([0-1][0-9])([0-3][0-9])(SP[0-9]?)?\.jpg$/",'/./SM_20190313.jpg')=0
preg_match("/^([A-Z0-9]{2,5})_(2[0-9]{3})([0-1][0-9])([0-3][0-9])(SP[0-9]?)?\.jpg$/",'/./SM_20190313.jpg')=1

Voir également

Langage de programmation - PHP - Référence de procédures et de fonctions - preg_split
Langage de programmation - PHP - Référence de procédures et de fonctions - preg_replace
Langage de programmation - Perl - Les expressions régulières

Dernière mise à jour : Dimanche, le 5 avril 2015