Funktionen preg_match_all
Funktionen preg_match_all utför en global sökning av ett mönster i en sträng. Den första parametern är reguljära uttrycket, den andra är strängen att söka i, den tredje är arrayen för att lagra resultaten. Den fjärde valfria parametern bestämmer strukturen på returvärdet, och den femte valfria parametern är offset för sökningens start.
Syntax
preg_match_all(pattern, subject, matches, [flags], [offset]);
Flaggor
Låt oss titta på vilka värden den fjärde parametern kan ta:
| Parameter | Beskrivning |
|---|---|
PREG_PATTERN_ORDER |
Standardläge. Resultaten grupperas efter fickor - nollelementet i arrayen innehåller nollfickorna, det första elementet i arrayen innehåller de första fickorna och så vidare. |
PREG_SET_ORDER |
Resultaten grupperas efter matchningar - varje element i arrayen innehåller en array med de hittade fickorna. |
PREG_OFFSET_CAPTURE |
För varje matchning returneras positionen i strängen. Varje resultat är en array där nollelementet innehåller matchningen, och det första - dess offset. |
PREG_UNMATCHED_AS_NULL |
Icke-matchande fickor returneras som null istället för
tomma strängar.
|
Exempel
Låt oss hitta alla siffror i strängen:
<?php
$str = 'abc 123 def 456';
preg_match_all('/\d+/', $str, $res);
var_dump($res[0]);
?>
Körresultat:
['123', '456']
Exempel
Låt oss hitta alla bokstäver 'a' i strängen:
<?php
$str = 'banana';
preg_match_all('/a/', $str, $res);
var_dump($res[0]);
?>
Körresultat:
['a', 'a', 'a']
Exempel
Låt oss extrahera alla tidsstämplar från strängen och deras komponenter:
<?php
$time = '12:01:02 13:03:04 14:05:06';
preg_match_all('#(\d\d):(\d\d):(\d\d)#', $time, $res);
var_dump($res);
?>
Körresultat:
[
0 => ['12:01:02', '13:03:04', '14:05:06'],
1 => ['12', '13', '14'],
2 => ['01', '03', '05'],
3 => ['02', '04', '06']
]
Exempel
Och nu använder vi flaggan PREG_SET_ORDER
för att gruppera efter matchningar:
<?php
$time = '12:01:02 13:03:04 14:05:06';
preg_match_all('#(\d\d):(\d\d):(\d\d)#', $time, $res, PREG_SET_ORDER);
var_dump($res);
?>
Körresultat:
[
0 => '12:01:02',
1 => '12',
2 => '01',
3 => '02'
],
[
0 => '13:03:04',
1 => '13',
2 => '03',
3 => '04'
],
[
0 => '14:05:06',
1 => '14',
2 => '05',
3 => '06'
]
Se även
-
funktionen
preg_match,
som söker den första matchningen av ett reguljärt uttryck -
funktionen
preg_replace,
som utför sök och ersätt med ett reguljärt uttryck