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 !
- <?php
- $Content = '<html><body><p>une autre image</p>';
- $Content .= '<p><img alt="" src="/share/proxy/services/assets/binary/image/porsche-women-2-1" style="height:330px; width:660px" /></p>';
- $Content .= '<p>bla bla bal</p>';
- $Content .= '<p> </p>';
- $Content .= '<p>aaaabbb<img alt="" src="/share/proxy/services/assets/binary/image/beignes" style="height:154px; width:230px" />ddddeffff</p>';
- $Content .= '<p>jshdkjsahd</p>';
- $Content .= '<p><img alt="" src="/share/proxy/services/assets/binary/image/gladir-com" style="height:150px; width:150px" /></p>';
- $Content .= '</body></html>';
-
- $pattern = '$/share/proxy/services/assets/binary/image/([a-zA-Z0-9-]+)$';
- preg_match($pattern, $Content, $m);
-
- while($m) {
- $replacement = generateRouter($m[0]);
- if($replacement == "") break;
- $Content = str_replace($m[0], $replacement, $Content);
- preg_match($pattern, $Content, $m);
- }
- echo $Content;
-
- function generateRouter($url) {
- switch($url) {
- case "/share/proxy/services/assets/binary/image/porsche-women-2-1":
- return "/assets/image/porsche-women-2-1";
- case "/share/proxy/services/assets/binary/image/beignes":
- return "/assets/image/beignes";
- case "/share/proxy/services/assets/binary/image/gladir-com":
- return "/assets/image/gladir-ca";
- }
- }
- ?>
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 !
- <?php
- $source = 'DEBUT<script type="text/javascript" id="gladir-com">document.write("gladir.com");</script>FIN';
- preg_match('/<script([^>]*)id="gladir-com">(.+?)<\/script>/', $source, $m);
- echo $m[2];
- ?>
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 !
- <?php
- $source = "DEBUT<h3>Description</h3>\n<p style=\"\text-align: justify\">Voici la description</p>\nFIN";
- preg_match('/<h3>Description<\/h3>[^>]*<p[^>]*>(.*?)<\/p>/i', $source, $m);
- echo $m[1];
- ?>
on obtiendra le résultat suivant :
Voici la descriptionL'exemple suivant permet de rechercher le contenu du tableau après le «<h3>Syntaxe</h3>» :
Essayer maintenant !
- <?php
- $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";
- preg_match('/<h3>Syntaxe<\/h3>[^<]*<table[^>]*>.*?<tr>.*?<td>(.*?)<\/td>.*?<\/tr>.*?<\/table>/i', $source, $m);
- echo $m[1];
- ?>
on obtiendra le résultat suivant :
function abs(x);L'exemple suivant permet d'extraire le contenu situé dans la balise «article» :
Essayer maintenant !
- <?php
- $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";
- preg_match('/<article[^>]*>(.*?)<\/article>/is', $source, $m);
- echo $m[1];
- ?>
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» :
- <?php
- function BooleanToStr($bool) {
- return $bool?'TRUE':'FALSE';
- }
-
- function isPhoneNumber($phone) {
- return preg_match("/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/", trim($phone));
- }
-
- echo 'ABC : ', BooleanToStr(isPhoneNumber('ABC')),'<br />';
- echo '7777777 : ', BooleanToStr(isPhoneNumber('7777777')),'<br />';
- echo '444-5555 : ', BooleanToStr(isPhoneNumber('444-5555')),'<br />';
- echo '555-555-X555 : ', BooleanToStr(isPhoneNumber('555-555-X555')),'<br />';
- echo '555-555-5555 : ', BooleanToStr(isPhoneNumber('555-555-5555')),'<br />';
- ?>
on obtiendra le résultat suivant :
ABC : FALSE7777777 : 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» :
- <?php
- 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 />";
- 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 />";
- 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 />";
- 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 />";
- 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 />";
- ?>
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')=1preg_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