(PHP 4, PHP 5, PHP 7)
preg_match_all — 执锟斤拷一锟斤拷全锟斤拷锟斤拷锟斤拷锟斤拷式匹锟斤拷
$pattern
, string $subject
[, array &$matches
[, int $flags
= PREG_PATTERN_ORDER
[, int $offset
= 0
]]] ) : int
锟斤拷锟斤拷subject
锟斤拷锟斤拷锟斤拷匹锟斤拷pattern
锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷式
锟斤拷匹锟斤拷锟斤拷锟斤拷锟揭斤拷锟斤拷锟斤拷锟斤拷flag
指锟斤拷顺锟斤拷锟斤拷锟斤拷锟�matches
锟斤拷.
锟节碉拷一锟斤拷匹锟斤拷锟揭碉拷锟斤拷, 锟斤拷锟斤拷锟叫硷拷锟斤拷锟斤拷锟斤拷锟揭伙拷锟狡ワ拷锟轿伙拷锟斤拷锟斤拷锟�.
pattern
要锟斤拷锟斤拷锟斤拷模式锟斤拷锟街凤拷锟斤拷锟斤拷式锟斤拷
subject
锟斤拷锟斤拷锟街凤拷锟斤拷锟斤拷
matches
锟斤拷维锟斤拷锟介,锟斤拷为锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷匹锟斤拷锟斤拷, 锟斤拷锟斤拷锟斤拷锟斤拷通锟斤拷flags
指锟斤拷锟斤拷
flags
锟斤拷锟皆斤拷锟斤拷锟斤拷锟斤拷锟绞癸拷锟�(注锟解不锟斤拷同时使锟斤拷PREG_PATTERN_ORDER
锟斤拷
PREG_SET_ORDER
)锟斤拷
PREG_PATTERN_ORDER
锟斤拷锟斤拷锟斤拷锟轿�$matches[0]锟斤拷锟斤拷锟斤拷锟斤拷模式锟斤拷锟斤拷锟斤拷匹锟斤拷, $matches[1] 锟斤拷锟斤拷锟揭伙拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷匹锟戒,锟皆达拷锟斤拷锟狡★拷
<?php
preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
"<b>example: </b><div align=left>this is a test</div>",
$out, PREG_PATTERN_ORDER);
echo $out[0][0] . ", " . $out[0][1] . "\n";
echo $out[1][0] . ", " . $out[1][1] . "\n";
?>
锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�
<b>example: </b>, <div align=left>this is a test</div> example: , this is a test
锟斤拷锟�, $out[0]锟角帮拷锟斤拷匹锟斤拷锟斤拷锟斤拷模式锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷锟介, $out[1]锟角帮拷锟斤拷锟秸合憋拷签锟节碉拷锟街凤拷锟斤拷锟斤拷锟斤拷锟介。
锟斤拷锟斤拷锟斤拷锟斤拷锟绞斤拷锟斤拷锟斤拷舜锟斤拷锟斤拷频锟斤拷锟斤拷椋�$matches 锟斤拷锟斤拷锟斤拷锟斤拷舜锟斤拷锟斤拷锟斤拷锟斤拷锟侥硷拷锟斤拷
锟斤拷锟斤拷锟斤拷锟斤拷锟绞斤拷铮拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷耍锟斤拷锟斤拷锟斤拷锟揭诧拷锟斤拷锟斤拷榇拷锟斤拷锟� $matches[NAME] 锟叫★拷
<?php
preg_match_all(
'/(?J)(?<match>foo)|(?<match>bar)/',
'foo bar',
$matches,
PREG_PATTERN_ORDER
);
print_r($matches['match']);
?>
锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�
Array ( [0] => [1] => bar )
PREG_SET_ORDER
锟斤拷锟斤拷锟斤拷锟轿�$matches[0]锟斤拷锟斤拷锟斤拷一锟斤拷匹锟斤拷玫锟斤拷锟斤拷锟斤拷锟狡ワ拷锟�(锟斤拷锟斤拷锟斤拷锟斤拷)锟斤拷 $matches[1]锟角帮拷锟斤拷锟节讹拷锟斤拷匹锟戒到锟斤拷锟斤拷锟斤拷匹锟斤拷(锟斤拷锟斤拷锟斤拷锟斤拷)锟斤拷锟斤拷锟介,锟皆达拷锟斤拷锟狡★拷
<?php
preg_match_all("|<[^>]+>(.*)</[^>]+>|U",
"<b>example: </b><div align=\"left\">this is a test</div>",
$out, PREG_SET_ORDER);
echo $out[0][0] . ", " . $out[0][1] . "\n";
echo $out[1][0] . ", " . $out[1][1] . "\n";
?>
锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�
<b>example: </b>, example: <div align="left">this is a test</div>, this is a test
PREG_OFFSET_CAPTURE
锟斤拷锟斤拷锟斤拷锟斤拷潜锟斤拷锟斤拷荩锟矫匡拷锟斤拷锟斤拷值锟狡ワ拷浞碉拷锟绞憋拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷目锟斤拷锟街凤拷锟斤拷锟斤拷偏锟斤拷锟斤拷锟斤拷
注锟斤拷锟斤拷锟侥憋拷matches
锟叫碉拷每一锟斤拷匹锟斤拷锟斤拷锟街凤拷锟斤拷元锟截o拷使锟斤拷
锟斤拷为一锟斤拷锟斤拷0锟斤拷元锟斤拷为匹锟斤拷锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷1锟斤拷元锟斤拷为
匹锟斤拷锟斤拷锟街凤拷锟斤拷锟斤拷subject
锟叫碉拷偏锟斤拷锟斤拷锟斤拷
<?php
preg_match_all('/(foo)(bar)(baz)/', 'foobarbaz', $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>
锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�
Array ( [0] => Array ( [0] => Array ( [0] => foobarbaz [1] => 0 ) ) [1] => Array ( [0] => Array ( [0] => foo [1] => 0 ) ) [2] => Array ( [0] => Array ( [0] => bar [1] => 3 ) ) [3] => Array ( [0] => Array ( [0] => baz [1] => 6 ) ) )
锟斤拷锟矫伙拷懈锟斤拷锟斤拷锟斤拷锟斤拷牵锟斤拷俣锟斤拷锟斤拷锟轿�PREG_PATTERN_ORDER
锟斤拷
offset
通锟斤拷锟斤拷 锟斤拷锟斤拷时锟斤拷目锟斤拷锟街凤拷锟斤拷锟侥匡拷始位锟矫匡拷始锟斤拷锟斤拷选锟斤拷锟斤拷offset
锟斤拷锟斤拷
锟斤拷目锟斤拷锟街凤拷锟斤拷锟斤拷指锟斤拷位锟矫匡拷始锟斤拷锟斤拷(锟斤拷位锟斤拷锟街斤拷)锟斤拷
Note:
使锟斤拷
offset
锟斤拷锟斤拷锟斤拷同锟节达拷锟斤拷 substr($subject, $offset) 锟斤拷 锟斤拷锟斤拷锟� preg_match_all() 锟斤拷为目锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷为pattern
锟斤拷锟皆帮拷锟斤拷锟斤拷锟皆憋拷锟斤拷^锟斤拷 $ 锟斤拷锟斤拷 (?<=x) 锟斤拷 示锟斤拷锟介看 preg_match()锟斤拷
锟斤拷锟斤拷锟斤拷锟斤拷匹锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟�0锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷蠓祷锟�FALSE
锟斤拷
锟芥本 | 说锟斤拷 |
---|---|
5.4.0 |
锟斤拷锟斤拷matches 锟斤拷为锟斤拷选锟侥★拷
|
5.3.6 |
锟斤拷锟� offset
锟斤拷锟斤拷
subject 锟侥程度o拷锟斤拷锟斤拷锟斤拷 FALSE 锟斤拷
|
5.2.2 | 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤法锟斤拷锟皆斤拷锟斤拷(?<name>)锟斤拷(?'name')锟皆硷拷 (?P<name>)锟剿★拷 之前锟芥本锟斤拷锟斤拷锟斤拷(?P<name>)锟斤拷式锟斤拷 |
Example #1 锟斤拷锟斤拷锟斤拷锟斤拷锟侥憋拷锟叫的电话锟斤拷锟诫。
<?php
preg_match_all("/\(? (\d{3})? \)? (?(1) [\-\s] ) \d{3}-\d{4}/x",
"Call 555-1212 or 1-800-555-1212", $phones);
?>
Example #2 锟斤拷锟斤拷匹锟斤拷锟紿TML锟斤拷签锟斤拷贪锟斤拷锟斤拷
<?php
//\\2锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷锟矫碉拷示锟斤拷. 锟斤拷锟斤拷锟斤拷pcre锟斤拷锟斤拷锟斤拷匹锟斤拷锟斤拷锟斤拷锟斤拷式锟叫第讹拷锟斤拷圆锟斤拷锟斤拷(锟斤拷锟斤拷锟斤拷([\w]+))
//匹锟戒到锟侥斤拷锟�. 锟斤拷锟斤拷使锟斤拷锟斤拷锟斤拷锟斤拷斜锟斤拷锟斤拷锟斤拷为锟斤拷锟斤拷使锟斤拷锟斤拷双锟斤拷锟斤拷.
$html = "<b>bold text</b><a href=howdy.html>click me</a>";
preg_match_all("/(<([\w]+)[^>]*>)(.*?)(<\/\\2>)/", $html, $matches, PREG_SET_ORDER);
foreach ($matches as $val) {
echo "matched: " . $val[0] . "\n";
echo "part 1: " . $val[1] . "\n";
echo "part 2: " . $val[2] . "\n";
echo "part 3: " . $val[3] . "\n";
echo "part 4: " . $val[4] . "\n\n";
}
?>
锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�
matched: <b>bold text</b> part 1: <b> part 2: b part 3: bold text part 4: </b> matched: <a href=howdy.html>click me</a> part 1: <a href=howdy.html> part 2: a part 3: click me part 4: </a>
Example #3 使锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷
<?php
$str = <<<FOO
a: 1
b: 2
c: 3
FOO;
preg_match_all('/(?P<name>\w+): (?P<digit>\d+)/', $str, $matches);
/* 锟斤拷锟斤拷锟斤拷锟斤拷锟絧hp 5.2.2(pcre 7.0)锟斤拷锟斤拷甙姹撅拷鹿锟斤拷锟�, 锟斤拷锟斤拷, 为锟斤拷锟斤拷锟斤拷锟斤拷
* 锟狡硷拷使锟斤拷锟斤拷锟斤拷姆锟绞�. */
// preg_match_all('/(?<name>\w+): (?<digit>\d+)/', $str, $matches);
print_r($matches);
?>
锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�
Array ( [0] => Array ( [0] => a: 1 [1] => b: 2 [2] => c: 3 ) [name] => Array ( [0] => a [1] => b [2] => c ) [1] => Array ( [0] => a [1] => b [2] => c ) [digit] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [2] => Array ( [0] => 1 [1] => 2 [2] => 3 ) )