资讯专栏INFORMATION COLUMN

php之正则表达式函数总结

sshe / 1418人阅读

摘要:之正则表达式函数总结匹配用于匹配常用的函数有两个,分别是和看代码一般三个参数正则需要匹配的字符串因为匹配到了个就会停止匹配将所有满足正则规则的匹配放到数组里。

php之正则表达式函数总结

匹配

用于匹配常用的函数有两个,分别是preg_matchpreg_match_all

看代码:

//preg_match($pattern, $subject, &$match, [$flags=0], [$offset=0]) 一般三个参数

$pattern = "/[0-9]/";  //正则
$subject = "abc1def2ghi3klm4";    //需要匹配的字符串
$return = preg_match($pattern, $subject, $matches);
echo $return; //1  因为匹配到了1个就会停止匹配
print_r($matches); // ["1"]  将所有满足正则规则的匹配放到数组里。


//preg_match_all($pattern, $subject, $matches,...)
$pattern = "/[0-9]/";//正则字符串
$subject = "abc1def2ghi3klm4";//需要匹配的目标字符串
$return = preg_match_all($pattern, $subject, $matches);
echo $return;//4    因为会匹配所有的
print_r($matches);//[0=>["1","2","3","4"]] 注意是个二维数组。

替换

用于替换常用的函数也有两个preg_replacepreg_filter,这两个灰常的相似!!!

看代码:

//preg_replace($pattern, $replacement, $subject)

$pattern = "/[0-9]/";
$replacement = "嘿嘿嘿";
$subject = "a1b2c3";
$return = preg_replace($pattern, $replacement, $subject);
echo $return; //"a嘿嘿嘿b嘿嘿嘿c嘿嘿嘿"


//preg_filter($pattern, $replacement, $subject)     //和preg_replace 没有任何变化
$pattern = "/[0-9]/";
$replacement = "嘿嘿嘿";
$subject = "a1b2c3";
$return = preg_filter($pattern, $replacement, $subject);
echo $return; //"a嘿嘿嘿b嘿嘿嘿c嘿嘿嘿"

//但是$pattern 和 $subject都是数组呢
$pattern = array("/[0-3]/", "/[4-6]/", "/[7-9]/");
$replacement = array("小", "中", "大");
$subject = array("a", "b", "1as", "d", "s5d", "7qq");
$return = preg_replace($pattern, $replacement, $subject);
print_r($return);
//结果
Array
(
    [0] => a
    [1] => b
    [2] => 小as
    [3] => d
    [4] => s中d
    [5] => 大qq
) 


$pattern = array("/[0-3]/", "/[4-6]/", "/[7-9]/");
$replacement = array("小", "中", "大");
$subject = array("a", "b", "1as", "d", "s5d", "7qq");
$return = preg_filter($pattern, $replacement, $subject);
print_r($return);
//结果
Array
(
    [2] => 小as
    [4] => s中d
    [5] => 大qq
)

数组匹配 + 分割

分别是preg_greppreg_split

看代码:

//趁热打铁  其实preg_grep呢 就是preg_filter的阉割版  只匹配  不替换而已
//preg_grep($pattern, $subject)
$subject = ["r", "a2", "b3", "c", "d"];
$pattern = "/[0-9]/";
$fl_array = preg_grep($pattern, $subject);
print_r($fl_array);
//结果:
Array
(
    [1] => a2
    [2] => b3
)    //注意索引


//preg_split($pattern, $subject) 返回分割后的数组
$subject = "a132b456c777d";
$pattern = "/[0-9]+/";   匹配至少一个数字
$return = preg_split($pattern, $subject);
print_r($return);
//结果:
Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30657.html

相关文章

  • PHP小知识点

    摘要:那些琐碎的知识点作者记录的的很奇特很难记的知识点。易错知识点整理注意和的区别中和都是输出的作用,但是两者之间还是有细微的差别。今天手头不忙,总结一下,分享过程中掌握的知识点。 深入理解 PHP 之:Nginx 与 FPM 的工作机制 这篇文章从 Nginx 与 FPM 的工作机制出发,探讨配置背后的原理,让我们真正理解 Nginx 与 PHP 是如何协同工作的。 PHP 那些琐碎的知识...

    hover_lew 评论0 收藏0
  • PHP基础系列正则达式(一)

    摘要:正则表达式作为一个匹配的模板,是由定界符,原子普通字符,例如有特殊功能的字符称为元字符,例如等以及模式修正符等部分组成的文字模式。正则表达式中可以使用编码。限定符限定符用来指定正则表达式的一个给定原子必须要出现多少次才能满足匹配。 正则表达式的定义 正则表达式就是描述字符排列模式的一种自定义的语法规则。由于正则表达式本身具有一套非常完整的、可以编写模式的语法体系,提供了一种灵活且直观的...

    Anchorer 评论0 收藏0
  • PHP的性能优化方法总结

    摘要:内置函数的性能优劣。产生额外开销的错误抑制符号,最好别用不管是性能优化和项目的健壮性等方面。在方法中递增局部变量,速度是最快的。类似的方法调用所花费的时间接近于次的局部变量递增操作。 什么情况之下,会遇到PHP性能问题?1:PHP语法使用不恰当。2:使用PHP语言做了它不擅长的事情。3:使用PHP语言连接的服务不给力。4:PHP自身的短板(PHP自身做不了的事情)。5:我们也不知道的问...

    gekylin 评论0 收藏0
  • 正则达式前端使用手册

    摘要:非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。 导读 你有没有在搜索文本的时候绞尽脑汁, 试了一个又一个表达式, 还是不行. 你有没有在表单验证的时候, 只是做做样子(只要不为空就好), 然后烧香拜佛, 虔诚祈祷, 千万不要出错. 你有没有在使用sed 和 grep 命令的时候, 感觉莫名其妙, 明明应该支持的元字符, 却就是匹配不到. 甚至,...

    zhoutao 评论0 收藏0
  • Java开发

    摘要:大多数待遇丰厚的开发职位都要求开发者精通多线程技术并且有丰富的程序开发调试优化经验,所以线程相关的问题在面试中经常会被提到。将对象编码为字节流称之为序列化,反之将字节流重建成对象称之为反序列化。 JVM 内存溢出实例 - 实战 JVM(二) 介绍 JVM 内存溢出产生情况分析 Java - 注解详解 详细介绍 Java 注解的使用,有利于学习编译时注解 Java 程序员快速上手 Kot...

    Lucky_Boy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<