web-dev-qa-db-fra.com

PHP fonctions preg_match et preg_match_all

Je voudrais savoir ce que le preg_match et preg_match_all les fonctions le font et comment les utiliser.

42
sikas

preg_match arrête de s'occuper du premier match. preg_match_all, d'autre part, continue de chercher jusqu'à ce qu'il termine le traitement de la chaîne entière. Une fois la correspondance trouvée, il utilise le reste de la chaîne pour essayer d'appliquer une autre correspondance.

http://php.net/manual/en/function.preg-match-all.php

117
romaninsh

Les fonctions preg_match et preg_match_all PHP utilisent des expressions régulières compatibles Perl).

Vous pouvez regarder cette série pour bien comprendre les expressions régulières compatibles Perl: https://www.youtube.com/watch?v=GVZOJ1rEnUg&list=PLfdtiltiRHWGRPyPMGuLPWuiWgEI9Kp1w

preg_match ($ pattern, $ subject, & $ matches, $ flags, $ offset)

La fonction preg_match Est utilisée pour rechercher un $pattern Particulier dans une chaîne $subject Et lorsque le motif est trouvé la première fois, il arrête de le rechercher. Il génère des correspondances dans le $matches, Où $matches[0] Contiendra le texte correspondant au modèle complet, $matches[1] Aura le texte correspondant au premier sous-modèle entre parenthèses capturé, et bientôt.

Exemple de preg_match()

<?php
preg_match(
    "|<[^>]+>(.*)</[^>]+>|U",
    "<b>example: </b><div align=left>this is a test</div>",
    $matches
);

var_dump($matches);

Production:

array(2) {
  [0]=>
  string(16) "<b>example: </b>"
  [1]=>
  string(9) "example: "
}

preg_match_all ($ pattern, $ subject, & $ matches, $ flags)

La fonction preg_match_all Recherche toutes les correspondances dans une chaîne et les renvoie dans un tableau multidimensionnel ($matches) Ordonné selon $flags. Lorsqu'aucune valeur $flags N'est transmise, elle ordonne les résultats de sorte que $matches[0] Est un tableau de correspondances de modèle complet, $matches[1] Est un tableau de chaînes correspondant au premier sous-modèle entre parenthèses , etc.

Exemple de preg_match_all()

<?php
preg_match_all(
    "|<[^>]+>(.*)</[^>]+>|U",
    "<b>example: </b><div align=left>this is a test</div>",
    $matches
);

var_dump($matches);

Production:

array(2) {
  [0]=>
  array(2) {
    [0]=>
    string(16) "<b>example: </b>"
    [1]=>
    string(36) "<div align=left>this is a test</div>"
  }
  [1]=>
  array(2) {
    [0]=>
    string(9) "example: "
    [1]=>
    string(14) "this is a test"
  }
}
16
Sumit

Un exemple concret:

preg_match("/find[ ]*(me)/", "find me find   me", $matches):
$matches = Array(
    [0] => find me
    [1] => me
)

preg_match_all("/find[ ]*(me)/", "find me find   me", $matches):
$matches = Array(
    [0] => Array
        (
            [0] => find me
            [1] => find   me
        )

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

preg_grep("/find[ ]*(me)/", ["find me find    me", "find  me findme"]):
$matches = Array
(
    [0] => find me find    me
    [1] => find  me findme
)
7
Rebecca