文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么使用PHP中全局正则表达式匹配及匹配数组元素

2023-06-25 11:39

关注

这篇文章主要介绍“怎么使用PHP中全局正则表达式匹配及匹配数组元素”,在日常操作中,相信很多人在怎么使用PHP中全局正则表达式匹配及匹配数组元素问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用PHP中全局正则表达式匹配及匹配数组元素”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

怎么使用PHP中全局正则表达式匹配及匹配数组元素

preg_match_all()函数

之前我们只介绍了preg_match() 函数这一种基础函数,在 PHP 中还有一个和 preg_match() 函数极为类似的函数——preg_match_all(),该函数可以搜索字符串中所有可以和正则表达式匹配的结果。

该函数的语法格式如下:

preg_match_all($pattern, $subject [, &$matches [, $flags = PREG_PATTERN_ORDER [, $offset = 0 ]]])

其中需要注意的是:

$pattern表示要搜索的模式,也就是定义好的正则表达式;$subject表示要搜索的字符串;$matches表示可选参数是个多维数组,用来存放所有匹配的结果, 数组排序通过 $flags 指定;$offset表示可选参数,$offset 用于从目标字符串中指定位置开始搜索,它的单位是字节。

$flags表示可选参数,其中它可以结合下面几个标记使用,

结果排序为 $matches[0] 保存完整模式的所有匹配,$matches[1] 保存第一个子组的所有匹配,以此类推。

结果排序为 $matches[0] 包含第一次匹配得到的所有匹配(包含子组), $matches[1] 是包含第二次匹配到的所有匹配(包含子组)的数组,以此类推。

如果这个标记被传递,每个发现的匹配返回时会增加它相对目标字符串的偏移量。注意这会改变 $matches 中的每一个匹配结果字符串元素,使其成为一个第 0 个元素为匹配结果字符串,第 1 个元素为匹配结果字符串在 subject 中的偏移量。

其中不能同时使用 PREG_PATTERN_ORDER PREG_SET_ORDER,preg_match_all() 函数可以返回 $pattern 的匹配次数(可能是 0),如果发生错误则返回 FALSE

接下来我们通过示例来看一下preg_match_all() 函数的应用,匹配一个字符串,示例如下:

<?php    $subject = "abcdefghijkdefabcedfdefxyzdef";    $pattern_1 = '/(def)(abc)/';    $num_1 = preg_match_all($pattern_1, $subject, $matches_1,PREG_PATTERN_ORDER);    echo "<pre>";    var_dump($matches_1);    var_dump($num_1);    $pattern_2 = '/(def)(abc)/';    $num_2 = preg_match_all($pattern_2, $subject, $matches_2,PREG_OFFSET_CAPTURE, 3);    var_dump($matches_2);    var_dump($num_2);?>

输出结果:

怎么使用PHP中全局正则表达式匹配及匹配数组元素

由上述示例中,我们便完成了通过preg_match_all() 函数来匹配一个字符串。通过preg_match_all() 函数的应用,可以完成全局正则表达式匹配。

那接下来那我们看一下怎样完成检测与给定模式匹配的数组元素。这时候就要用到preg_grep() 函数了。

preg_grep() 函数

使用正则表达式除了可以匹配字符串外,还可以匹配数组中的元素。PHP 中的 preg_grep() 函数可以搜索数组中的所有元素,并返回与正则表达式匹配的所有元素所组成的数组。该函数的语法格式如下:

preg_grep($pattern, $input [, $flags = 0 ])

其中需要注意的是:

$pattern表示要搜索的模式,也就是定义好的正则表达式;$input表示要搜索的数组;$flags表示可选参数,可以设置为 PREG_GREP_INVERT,这时函数会返回数组中与给定模式 $pattern 不匹配的元素组成的数组。perg_grep() 函数将遍历 $input 数组中的每一个元素,让该元素与模式 $pattern 进行匹配,然后将匹配成功或者匹配失败的元素返回。

接下来,我们通过示例来看一下使用 perg_grep() 函数匹配数组中的元素,示例如下:

<?php    $test_arr = array(        '编程网',        'http://www.yisu.com/',        'php教程',        'abcdefg'    );    $preg = '/^[a-z]/';    $preg_arr_1 = preg_grep($preg, $test_arr);    $preg_arr_2 = preg_grep($preg, $test_arr, PREG_GREP_INVERT);    echo '<pre>';    var_dump($preg_arr_1);    var_dump($preg_arr_2);?>

输出结果:

怎么使用PHP中全局正则表达式匹配及匹配数组元素

上述示例便是通过preg_grep() 函数匹配数组中的元素。

到此,关于“怎么使用PHP中全局正则表达式匹配及匹配数组元素”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯