preg_match_all
<<<
preg_match preg_quote
>>>

6.33 Expressions rationnelles compatibles Perl
6 Référence des fonctions
 Manuel PHP

Introduction
Pré-requis
Installation
Configuration à l'exécution
Types de ressources
Constantes pré-définies
Exemples
options de recherche
syntaxe des masques
preg_grep
preg_match_all
->preg_match
preg_quote
preg_replace_callback
preg_replace
preg_split

6.33.12 preg_match()Expression rationnelle standard

[ Exemples avec preg_match ]   PHP 3 >= 3.0.9, PHP 4, PHP 5

int  preg_match ( string   pattern , string   subject , array   matches , int   flags , int   offset )

preg_match analyse subject pour trouver l'expression qui correspond à pattern .

Si matches est fourni, il sera rempli par les résultats de la recherche. $matches[0] contiendra le texte qui satisfait le masque complet, $matches[1] contiendra le texte qui satisfait la première parenthèse capturante, etc.

Le paramètre flags peut prendre l'une des valeurs suivantes :

    PREG_OFFSET_CAPTURE
    Si cette option est activée, toutes les sous-chaînes qui satisfont le masque seront aussi identifiées par leur offset. Notez que cela modifie le format de la valeur retournée , puisque chaque élément de réponse devient un tableau contenant la sous-chaîne résultat, à l'index 0 dans la chaîne subject constant 1 . Cette option a été ajoutée en PHP 4.3.0 .
Le paramètre flags a été ajouté en PHP 4.3.0 .

Normalement, la recherche commence au début de la chaîne subject . Le paramètre optionnel offset peut être utilisé pour spécifier une position pour le début de la recherche. Le paramètre offset a été introduit depuis la version 4.3.3 de PHP.

Note

Utiliser le paramètre offset ne revient pas à passer substr($subject, $offset) à preg_match_all à la place de la chaîne subject , car pattern peut contenir des assertions comme ^ , $ ou (?<=x) . Lisez la documentation sur la fonction preg_match pour des exemples. Comparez :


<?php
$subject
= "abcdef";
$pattern = '/^def/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3);
print_r($matches);
?>

L'exemple ci-dessus va afficher :


Array
(
)

avec cet exemple :


<?php
$subject
= "abcdef";
$pattern = '/^def/';
preg_match($pattern, substr($subject,3), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>

produira :


Array
(
[0] => Array
(
[0] => def
[1] => 0
)

)

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.

Array

Trouve la chaîne "php"

<?php
// Le "i" après le délimiteur du pattern indique que la recherche ne sera pas sensible à la casse
if (preg_match("/php/i", "PHP est le meilleur langage de script du web.")) {
    echo
'Un résultat a été trouvé.';
} else {
    echo
'Aucun résultat n\'a été trouvé.';
}
?>
Trouve le mot "web"

<?php
/* \b, dans le masque, indique une limite de mot, de façon à ce que le mot
"web" uniquement soit repéré, et pas seulement des parties de mots comme
  dans "webbing" ou "cobweb" */
if (preg_match("/\bweb\b/i", "PHP est le meilleur langage de script du web.")) {
     echo
'Un mot a été trouvé.';
} else {
     echo
'Un mot n\'a pas été trouvé.';
}

if (
preg_match("/\bweb\b/i", "PHP est le meilleur langage de script pour les webagency.")) {
     echo
'Un mot a été trouvé.';
} else {
     echo
'Un mot n\'a pas été trouvé.';
}
?>
Lire un nom de domaine dans une URL

<?php
// repérer le nom de l'hôte dans l'URL
preg_match("/^(http:\/\/)?([^\/]+)/i",
    
"http://www.php.net/index.html", $matches);
$host = $matches[2];

// repérer les deux derniers segments du nom de l'hôte
preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches);
echo
"Le nom de domaine est : ".$matches[0]."\n";
?>

Voir aussi preg_match_all , preg_replace et preg_split .

<< preg_match >>
preg_match_all Expressions rationnelles compatibles Perl preg_quote