`

php正则函数二preg_match_all

 
阅读更多

        继续来说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

 

  • 大小: 27.2 KB
分享到:
评论

相关推荐

    php小经验:解析preg_match与preg_match_all 函数

    Perl 兼容正则表达式(PCRE)函数是PHP中最常用的正则函数,例如`preg_match()`和`preg_match_all()`。 `preg_match()`函数用于执行单次正则匹配。它的基本语法是: ```php int preg_match(string pattern, string ...

    preg-match绕过

    在 PHP 中,preg_match 函数用于执行正则表达式匹配。为了避免绕过 preg_match 函数的功能限制,通常可以采取以下措施: 过滤用户输入:在将用户输入作为正则表达式模式使用之前,应该对其进行过滤和验证,确保用户...

    PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)

    在前面我们也说过,基于perl的正则表达式要快于POXIS正则表达式处理函数,所以我们只介绍以preg开头的基于perl的正则表达式。注意:在能偶使用字符串函数处理的时候,就不要使用正则表达式来处理字符串,因为字符串...

    php中使用preg_match_all匹配文章中的图片

    `preg_match_all`函数是PHP中用于全局正则表达式匹配的关键函数,它可以在一个字符串中查找所有符合特定模式的匹配项,并将这些匹配项存储在一个数组中。下面我们将详细讨论`preg_match_all`函数的使用、参数以及...

    PHP函数preg_match_all正则表达式的基本使用详细解析

    preg_match_all函数具体说明大家可以查看PHP手册,本文运用 preg_match_all用于测试正则表达的效果。 实例代码: 复制代码 代码如下:$html = ‘”biuuu”&gt;jb51.net&lt;/div&gt;&lt;div id=”biuuu_2″&gt;jb51.net2&lt;/div&gt;&lt;div ...

    PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】

    主要介绍了PHP preg_match实现正则表达式匹配功能,较为详细的介绍了preg_match函数的功能、参数含义、返回值及使用方法,并结合实例给出了preg_match输出是否匹配及匹配值的相关实现技巧,需要的朋友可以参考下

    php使用preg_match()函数验证ip地址的方法

    本文实例讲述了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采集后数据处理的一点心得笔记(编码转换和正则匹配)

    `preg_match_all`是PHP中的一个强大函数,用于在字符串中执行全局正则表达式匹配。以下是关于这个主题的详细讲解: 1. **使用curl进行站外采集**: - `curl`库是PHP中用于发送HTTP请求的工具,常用于网页抓取。你...

    php preg_match_all结合str_replace替换内容中所有img

    `preg_match_all` 是PHP中的一个正则表达式匹配函数,它可以找到所有匹配指定模式的字符串,并返回一个数组。在这个例子中,它的任务是找出所有`&lt;img&gt;`标签,并提取出`src`属性的值。使用的正则表达式是: ```regex...

    PHP 正则表达式常用函数_.docx

    根据提供的文档信息,本文将详细解释PHP中与正则表达式相关的几个常用函数:`preg_match()`、`ereg()`、`eregi()`以及`ereg_replace()`和`eregi_replace()`。这些函数在处理字符串和执行复杂的模式匹配时非常有用。 ...

    PHP中preg_match函数正则匹配的字符串长度问题

    `preg_match`函数第一个参数为正则表达式,第二个参数为要进行匹配的字符串,它会返回一个布尔值,表示正则表达式是否匹配成功,同时通过第三个参数引用的方式,如果匹配成功,可以获取匹配到的子串。一个基本的`...

    解决preg_match匹配过多字符长度的限制的思路分析

    中加入(随便放到哪里,我是直接放第一行的) pcre.backtrack_limit=-1 再次使用preg_match函数测试一下,大概1300多行上万个字符的字符串也能够匹配了。 项目中,用preg_match正则提取目标内容,死活有问题,代码测...

    PHP 字符串正则替换函数preg_replace使用说明

    - `preg_match_all()`:与 `preg_match()` 类似,但匹配所有出现的模式。 - `preg_replace_callback()`:类似于 `preg_replace()`,但使用回调函数来生成替换字符串。 ### 实例分析 下面是一些 `preg_replace()` ...

    PHP中preg_match正则匹配中的/u、/i、/s含义

    preg_match_all('/[^"]*"&gt;([^&lt;]*)&lt;\/div&gt;/isu', $html, $matches); ``` 这里 `/isu` 修饰符的含义是:`/i` 使匹配不区分大小写,`/s` 使得 `.` 可以匹配换行符,`/u` 保证了多字节字符(如汉字)的正确处理。 在...

    php正则preg_replace_callback函数用法实例

    - `preg_match_all`:类似`preg_match`,但会返回所有匹配的结果,而不仅仅是第一个。 - `preg_split`:根据正则表达式分割字符串。 在使用`preg_replace_callback`时,应注意确保回调函数已经定义,并且正确处理了...

Global site tag (gtag.js) - Google Analytics