php preg_match

WBOY
WBOY원래의
2016-06-20 12:31:061806검색

preg_match ( string pattern, string subject [, array matches [, int flags]])


 在 subject 字符串中搜索与 pattern 给出的正则表达式相匹配的内容。

 如果提供了 matches,则其会被搜索的结果所填充。 $matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。
菜鸟求问,这个函数不是只能匹配到最多一个符合的目标吗,matchs【0】和matchs【1】分别包含了啥,看不懂这句话


回复讨论(解决方案)

$s = 'func(123,456,789)';preg_match('/,?(\d+)/', $s, $m);print_r($m);preg_match_all('/,?(\d+)/', $s, $m);print_r($m);
Array(    [0] => 123    [1] => 123)Array(    [0] => Array        (            [0] => 123            [1] => ,456            [2] => ,789        )    [1] => Array        (            [0] => 123            [1] => 456            [2] => 789        ))

看不懂就动手做做

计算机科学是实验型科学,只动眼不动手 是不行的

不明白就打印出来出来看看。

$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。
这里说的第一个括号中的子模式 指的是\d+ 吗 ,是的话就看明白了。抱歉  我不是不想自己打,我在百度搜到输出结果了,但是有点困惑

(  子模式开始 
)  子模式结束 

手册是一定要看的!

匹配多个使用 preg_match_all

$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。

$matches[0]  会把边界的也保存
$matches[1] 只保留正则匹配的

例如

$content = '<img  src="http://www.csdn.net/abc.jpg" alt="php preg_match" >';preg_match_all('/<img .*?src=\"(http:\/\/.+\.(jpg|jpeg|gif|bmp|png))\" alt="php preg_match" >/i', $content, $matches); print_r($matches[0]);print_r($matches[1]);

Array
(
    [0] => php preg_match
)

Array
(
    [0] => http://www.csdn.net/abc.jpg
)

$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。

$matches[0]  会把边界的也保存
$matches[1] 只保留正则匹配的

例如

$content = '<img  src="http://www.csdn.net/abc.jpg" alt="php preg_match" >';preg_match_all('/<img .*?src=\"(http:\/\/.+\.(jpg|jpeg|gif|bmp|png))\" alt="php preg_match" >/i', $content, $matches); print_r($matches[0]);print_r($matches[1]);

Array
(
    [0] => php preg_match
)

Array
(
    [0] => http://www.csdn.net/abc.jpg
)


 第一个括号中的模式   我懂了。match【1】 输出的刚好是括号里面对应的模式

以后碰到同类问题都可以先打印一下看看

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.