继续来说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
相关推荐
Perl 兼容正则表达式(PCRE)函数是PHP中最常用的正则函数,例如`preg_match()`和`preg_match_all()`。 `preg_match()`函数用于执行单次正则匹配。它的基本语法是: ```php int preg_match(string pattern, string ...
在 PHP 中,preg_match 函数用于执行正则表达式匹配。为了避免绕过 preg_match 函数的功能限制,通常可以采取以下措施: 过滤用户输入:在将用户输入作为正则表达式模式使用之前,应该对其进行过滤和验证,确保用户...
在前面我们也说过,基于perl的正则表达式要快于POXIS正则表达式处理函数,所以我们只介绍以preg开头的基于perl的正则表达式。注意:在能偶使用字符串函数处理的时候,就不要使用正则表达式来处理字符串,因为字符串...
`preg_match_all`函数是PHP中用于全局正则表达式匹配的关键函数,它可以在一个字符串中查找所有符合特定模式的匹配项,并将这些匹配项存储在一个数组中。下面我们将详细讨论`preg_match_all`函数的使用、参数以及...
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)...
`preg_match_all`是PHP中的一个强大函数,用于在字符串中执行全局正则表达式匹配。以下是关于这个主题的详细讲解: 1. **使用curl进行站外采集**: - `curl`库是PHP中用于发送HTTP请求的工具,常用于网页抓取。你...
`preg_match_all` 是PHP中的一个正则表达式匹配函数,它可以找到所有匹配指定模式的字符串,并返回一个数组。在这个例子中,它的任务是找出所有`<img>`标签,并提取出`src`属性的值。使用的正则表达式是: ```regex...
根据提供的文档信息,本文将详细解释PHP中与正则表达式相关的几个常用函数:`preg_match()`、`ereg()`、`eregi()`以及`ereg_replace()`和`eregi_replace()`。这些函数在处理字符串和执行复杂的模式匹配时非常有用。 ...
`preg_match`函数第一个参数为正则表达式,第二个参数为要进行匹配的字符串,它会返回一个布尔值,表示正则表达式是否匹配成功,同时通过第三个参数引用的方式,如果匹配成功,可以获取匹配到的子串。一个基本的`...
中加入(随便放到哪里,我是直接放第一行的) pcre.backtrack_limit=-1 再次使用preg_match函数测试一下,大概1300多行上万个字符的字符串也能够匹配了。 项目中,用preg_match正则提取目标内容,死活有问题,代码测...
- `preg_match_all()`:与 `preg_match()` 类似,但匹配所有出现的模式。 - `preg_replace_callback()`:类似于 `preg_replace()`,但使用回调函数来生成替换字符串。 ### 实例分析 下面是一些 `preg_replace()` ...
preg_match_all('/[^"]*">([^<]*)<\/div>/isu', $html, $matches); ``` 这里 `/isu` 修饰符的含义是:`/i` 使匹配不区分大小写,`/s` 使得 `.` 可以匹配换行符,`/u` 保证了多字节字符(如汉字)的正确处理。 在...
- `preg_match_all`:类似`preg_match`,但会返回所有匹配的结果,而不仅仅是第一个。 - `preg_split`:根据正则表达式分割字符串。 在使用`preg_replace_callback`时,应注意确保回调函数已经定义,并且正确处理了...