(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
��������DZ����ݣ�ÿ�����ֵ�ƥ�䷵��ʱ�����������Ŀ���ַ�����ƫ������
ע�����ı�matches
�е�ÿһ��ƥ�����ַ���Ԫ�أ�ʹ��
��Ϊһ����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 �ij̶ȣ������� 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 ����ƥ���HTML��ǩ��̰����
<?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);
/* ���������php 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 ) )