摘要:之正则表达式函数总结匹配用于匹配常用的函数有两个,分别是和看代码一般三个参数正则需要匹配的字符串因为匹配到了个就会停止匹配将所有满足正则规则的匹配放到数组里。
php之正则表达式函数总结
匹配
用于匹配常用的函数有两个,分别是preg_match和preg_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_replace和preg_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_grep和preg_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性能问题?1:PHP语法使用不恰当。2:使用PHP语言做了它不擅长的事情。3:使用PHP语言连接的服务不给力。4:PHP自身的短板(PHP自身做不了的事情)。5:我们也不知道的问...
摘要:非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。 导读 你有没有在搜索文本的时候绞尽脑汁, 试了一个又一个表达式, 还是不行. 你有没有在表单验证的时候, 只是做做样子(只要不为空就好), 然后烧香拜佛, 虔诚祈祷, 千万不要出错. 你有没有在使用sed 和 grep 命令的时候, 感觉莫名其妙, 明明应该支持的元字符, 却就是匹配不到. 甚至,...
阅读 1799·2023-04-26 00:59
阅读 3108·2021-11-15 18:10
阅读 3035·2021-09-22 16:02
阅读 748·2021-09-02 15:15
阅读 3696·2019-08-30 15:56
阅读 1896·2019-08-30 15:54
阅读 2793·2019-08-29 16:31
阅读 2003·2019-08-29 16:10