Je voudrais savoir ce que le preg_match
et preg_match_all
les fonctions le font et comment les utiliser.
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.
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
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.
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: "
}
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.
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"
}
}
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
)