PHP preg match et preg match toutes les fonctions

je voudrais savoir ce que l' preg_match et preg_match_all fonctions et comment les utiliser.

30
demandé sur Nathan Arthur 2010-11-03 18:44:35

4 réponses

preg_match cesse de s'occuper du premier match. preg_match_all, d'un autre côté, continue à regarder 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

87
répondu romaninsh 2013-11-04 12:05:46

preg_match et preg_match_all les fonctions en 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, $sujet, &$matches, $drapeaux, $offset)

preg_match la fonction est utilisée pour rechercher un $pattern dans un $subject string et quand le motif est trouvé la première fois, il arrête de le chercher. Il affiche les correspondances dans le $matches, où $matches[0] contiendra le texte qui satisfait le masque complet, $matches[1] aura le texte qui correspond au premier sous-motif entre parenthèses capturé, et ainsi de suite.

Exemple preg_match()

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

var_dump($matches);

Sortie:

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

preg_match_all($motif, $sujet, &$matches, $options)

Le preg_match_all la fonction recherche toutes les correspondances dans une chaîne et les affiche dans un tableau multidimensionnel ($matches), ordonnés selon $flags. Lorsque n $flags la valeur est passée, elle commande les résultats de sorte que $matches[0] est un tableau de motif complet des matchs, $matches[1] est un tableau de chaînes correspondant au premier sous-motif entre parenthèses, et ainsi de suite.

Exemple preg_match_all()

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

var_dump($matches);

Sortie:

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"
  }
}
5
répondu Sumit 2017-09-17 18:38:59

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
)
2
répondu Rebecca 2016-07-11 15:51:48

le manuel PHP peut vous aider.

faites - nous savoir si vous avez du mal à comprendre.

-11
répondu meder omuraliev 2010-11-03 15:48:06