继续来说perl风格的正则函数preg_match_all。
函数原型:
<?php preg_match_all ($pattern, $subject, array &$matches = null, $flags = null, $offset = null) ?>
参数:完全和preg_match一样。
函数功能:类似preg_match,在$subject字符串中匹配$pattern;跟preg_match不同的是,preg_match_all在匹配的第一个结果时不会停止搜索,一直搜索到$subject的结尾。
返回值:根据函数功能就会看出不仅仅返回0或1,preg_match_all会搜索整个$subject直至结尾,有几个匹配结果就返回几。看个有匹配结果的例子。
<?php $url = 'http://www.sina.com.cn/abc/de/fg.php?fff.html?id=1'; $matches = array(); $pattern = '/(\.){1}[^.|?]+(\?){1}/i'; $count = preg_match_all($pattern, $url, $matches); var_dump($count); var_dump($matches); ?>
输出
int 2 array (size=3) 0 => array (size=2) 0 => string '.php?' (length=5) 1 => string '.html?' (length=6) 1 => array (size=2) 0 => string '.' (length=1) 1 => string '.' (length=1) 2 => array (size=2) 0 => string '?' (length=1) 1 => string '?' (length=1)
这个例子匹配到两个结果,分别是http://www.sina.com.cn/abc/de/fg.php?fff.html?id=1字符串中红色的两部分。大家会发现$matches中的元素也是数组类型,$matches[0]存放匹配的结果,$matches[1]存放子正则1匹配的结果,$matches[2]存放正则2匹配的结果。可能说的不太直观,看下图就明白了
黑色箭头是$pattern正则匹配,绿箭头是子正则匹配。
再看个未匹配成功的例子
<?php $url = 'http://www.sina.com.cn/abc/de/fg.php?fff.html?id=1'; $matches = array(); $pattern = '/(\.){1}[^.|?]+(\?){2}/i'; $count = preg_match_all($pattern, $url, $matches); var_dump($count); var_dump($matches); ?>
输出
int 0 array (size=3) 0 => array (size=0) empty 1 => array (size=0) empty 2 => array (size=0) empty
相关推荐
preg_match_all 函数:int preg_match_all ( string pattern, string subject, array matches [, int flags] )执行一个全局正则表达式匹配在 subject 中搜索所有与 pattern 给出的正则表达式匹配的内容并将结果以 ...
在前面我们也说过,基于perl的正则表达式要快于POXIS正则表达式处理函数,所以我们只介绍以preg开头的基于perl的正则表达式。注意:在能偶使用字符串函数处理的时候,就不要使用正则表达式来处理字符串,因为字符串...
PHP 中的应用在 PHP 应用中,正则表达式主要用于:•正则匹配:根据正则表达式匹配相应的内容•正则替换:根据正则表达式匹配内容并替换•正则分割:根据正则表达式分割字符串在 PHP 中有两类正则表达式函数,一类是...
preg_match_all函数具体说明大家可以查看PHP手册,本文运用 preg_match_all用于测试正则表达的效果。 实例代码: 复制代码 代码如下:$html = ‘”biuuu”>jb51.net</div><div id=”biuuu_2″>jb51.net2</div><div ...
主要介绍了PHP preg_match实现正则表达式匹配功能,较为详细的介绍了preg_match函数的功能、参数含义、返回值及使用方法,并结合实例给出了preg_match输出是否匹配及匹配值的相关实现技巧,需要的朋友可以参考下
本文实例讲述了php使用preg_match()函数验证ip地址的方法。分享给大家供大家参考,具体如下: 代码一、正则实现 preg_match('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)...
主要介绍了PHP中preg_match函数正则匹配的字符串长度问题,如果你也遇到了preg_match正则提取内容时总是空白或提取不到的话,那就可能是遇到了这个问题啦,需要的朋友可以参考下
PHP中preg_match正则匹配的/u /i /s是什么意思 /u 表示按unicode(utf-8)匹配(主要针对多字节比如汉字) /i 表示不区分大小写(如果表达式里面有 a, 那么 A 也是匹配对象...搜索,分割等)PHP中preg_match函数正则匹配
POSIX 风格正则表达式的两个主要函数: ereg 函数:(正则表达式匹配) 格式:int ereg ( string pattern, string string [, array ®s] ) 注意:使用 Perl 兼容正则表达式语法的 preg_match() 函数通常是比 ...
中加入(随便放到哪里,我是直接放第一行的) pcre.backtrack_limit=-1 再次使用preg_match函数测试一下,大概1300多行上万个字符的字符串也能够匹配了。 项目中,用preg_match正则提取目标内容,死活有问题,代码测...
match_all: 正则匹配,执行preg_match_all并格式化输出 grep: 正则匹配,执行preg_grep并格式化输出 replace: 正则替换,执行preg_replace并格式化输出 filter: 正则替换,执行preg_filter并格式化输出 replace_...
preg_match() 匹配成功一次后就会停止匹配,如果要实现全部结果的匹配,则需使用 preg_match_all() 函数。 语法: preg_match (pattern , subject, matches) 参数 描述 pattern 正则表达式 subject 需要匹配...
主要介绍了PHP的preg_match函数正则匹配字符串时出现的长度问题解决方法,需要的朋友可以参考下
preg_match_all 全部匹配函数 preg_match_all (string pattern,string subject,array matches[, int flags]); 对结果的排序使 $matches[0] 为全部模式匹配的数组。 用途:截取比较精确的内容,用于采集网页,分析...