Funksie preg_match_all
Die funksie preg_match_all voer 'n globale soektog na 'n patroon in 'n string uit. Die eerste parameter is die gereelde uitdrukking, die tweede is die string om in te soek, die derde is die skikking om resultate in te stoor. Die vierde opsionele parameter bepaal die tipe teruggekeerde struktuur, en die vyfde opsionele parameter is die verskuiwing van die begin van die soektog.
Sintaksis
preg_match_all(pattern, subject, matches, [flags], [offset]);
Vlaggies
Kom ons kyk watter waardes die vierde parameter kan aanneem:
| Parameter | Beskrywing |
|---|---|
PREG_PATTERN_ORDER |
Verstek modus. Resultate word volgens sakke gegroepeer - die nul element van die skikking bevat nul sakke, die eerste element van die skikking bevat eerste sakke en so meer. |
PREG_SET_ORDER |
Resultate word volgens ooreenkomste gegroepeer - elke element van die skikking bevat 'n skikking met die gevinde sakke. |
PREG_OFFSET_CAPTURE |
Vir elke ooreenkoms word die posisie in die string teruggegee. Elke resultaat is 'n skikking waar die nul element die ooreenkoms bevat, en die eerste - sy verskuiwing. |
PREG_UNMATCHED_AS_NULL |
Nie-gevinde sakke word as null teruggegee in plaas van
leë snare.
|
Voorbeeld
Kom ons vind alle syfers in die string:
<?php
$str = 'abc 123 def 456';
preg_match_all('/\d+/', $str, $res);
var_dump($res[0]);
?>
Resultaat van die kode-uitvoering:
['123', '456']
Voorbeeld
Kom ons vind alle letters 'a' in die string:
<?php
$str = 'banana';
preg_match_all('/a/', $str, $res);
var_dump($res[0]);
?>
Resultaat van die kode-uitvoering:
['a', 'a', 'a']
Voorbeeld
Kom ons haal alle tydmerke uit die string en hul komponente:
<?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);
?>
Resultaat van die kode-uitvoering:
[
0 => ['12:01:02', '13:03:04', '14:05:06'],
1 => ['12', '13', '14'],
2 => ['01', '03', '05'],
3 => ['02', '04', '06']
]
Voorbeeld
En nou gebruik ons die vlaggie PREG_SET_ORDER
vir groepering volgens ooreenkomste:
<?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);
?>
Resultaat van die kode-uitvoering:
[
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'
]
Sien ook
-
die funksie
preg_match,
wat die eerste ooreenkoms met 'n gereelde uitdrukking soek -
die funksie
preg_replace,
wat soek en vervang volgens 'n gereelde uitdrukking doen