1. php中常用的正则表达式函数
  2. * preg_match()
  3. * preg_match_all()
  4. * preg_replace()
  5. * preg_filter()
  6. * preg_grep()
  7. * preg_split()
  8. * preg_quote()
  9.  
  10. 接下来对比讲解:
  11.  
  12. 讲解中 $pattern 通常表示正则表达式
    $subject 通常表示目标处理数据
  13. 定义一个方法 方便查看数据类型:
  1. function show($val = null){
  2. if(empty($val)){
  3. //打印空
  4. echo 'null';
  5. }elseif(is_array($val) || is_object($val)){
  6. //打印数组或者对象
  7. echo '<pre>';
  8. print_r($val);
  9. echo '</pre>';
  10. }else{
  11. //打印string int float
  12. echo $val;
  13. }
  14. }
  1. preg_match()与preg_match_all()
  1. /*方法简单说明*/
  2. preg_match($pattern,$subject,[array &$matches]) //匹配一次 第三个参数可选 匹配结果放置matches数组
  3. preg_match_all($pattern,$subject,array &matches) //匹配多次 三参必选 匹配结果放置matches数组
  4.  
  5. $pattern = '/[0-9]/';
  6. $subject='b5fg4sgf3sd2f1g';
  7. $m1 =preg_match($pattern,$subject,$arr1);
  8.  
  9. show($m1);
  10. show($arr1);
  11. /*
  12. 1
  13. Array
  14. (
  15. [0] => 5
  16. )
  17. */
  18.  
  19. $m2 =preg_match_all($pattern,$subject,$arr2);
  20.  
  21. show($m2);
  22. show($arr2);
  23.  
  24. /*
  25. 5
  26. Array
  27. (
  28. [0] => Array
  29. (
  30. [0] => 5
  31. [1] => 4
  32. [2] => 3
  33. [3] => 2
  34. [4] => 1
  35. )
  36. )
  37. */
  38.  
  39. 2.preg_replace()与preg_filter()
  40. /*方法简单说明*/
  41. * preg_replacepreg_filter
  42. * preg_replace($pattern,$replacement,$subject)
  43. * //正则替换函数被替换对象是数组 返回全部
  44. //正则替换函数 被替换对象是数组 仅返回被替换元素
  45. * 联想:str_repalce()
  46. * echo str_replace("world","Shanghai","Hello world!");
  47. * //得到Hello Shanghai!
  48. //第一测 字符串中替换字符串 结论:此处preg_replace()与preg_filter()无区别
  49. $pattern = '/[0-9]/';
  50. $subject='b65fg4sgf3sd2f1g';
  51. $replacement = '_';
  52. $str1 = preg_replace($pattern,$replacement,$subject);
  53. $str2 = preg_filter($pattern,$replacement,$subject);
  54. echo '<hr>';
  55. show($str1);
  56. echo '<br>';
  57. show($str2);
  58. /*
  59. b__fg_sgf_sd_f_g
  60. b__fg_sgf_sd_f_g
  61. */
  62.  
  63. //第二测 字符串中根据数组正则 替换 结论:此处preg_replace()与preg_filter()无区别
  64. $pattern = array('/[123]/','/[456]/','/[789]/');
  65. $subject='b123fg3456sgf3789f1g';
  66. $replacement = array('天','地','人');
  67. $str3 = preg_replace($pattern,$replacement,$subject);
  68. $str4 = preg_filter($pattern,$replacement,$subject);
  69. echo '<hr>';
  70. show($str3);
  71. echo '<br>';
  72. show($str4);
  73. /*
  74. b天天天fg天地地地sgf天人人人f天g
  75. b天天天fg天地地地sgf天人人人f天g
  76. */
  77.  
  78. //第三测 数组中根据数组正则 替换 结论:此处展示preg_repalce()与preg_filter()有区别
  79. $pattern = array('/[123]/','/[456]/','/[789]/');
  80. $subject=array('b','fg3','456','sgf','789','fg');
  81. $replacement = array('天','地','人');
  82. $str5 = preg_replace($pattern,$replacement,$subject);
  83. $str6 = preg_filter($pattern,$replacement,$subject);
  84. echo '<hr>';
  85. show($str5);
  86. echo '<br>';
  87. show($str6);
  88. /*
  89. Array
  90. (
  91. [0] => b
  92. [1] => fg天
  93. [2] => 地地地
  94. [3] => sgf
  95. [4] => 人人人
  96. [5] => fg
  97. )
  98.  
  99. Array
  100. (
  101. [1] => fg天
  102. [2] => 地地地
  103. [4] => 人人人
  104. )
  105. */
  106. 3 . preg_grep($pattern, array $subject) //此处$subject只可以为一维数组
  107.  
  108. /*函数说明*/
  109. preg_grep($pattern,array $input)//只可以匹配一维数组 返回匹配成功的数组元素
  110. 可以理解preg_grep()为阉割版 preg_filter()
  111. 只做了匹配 不作替换
  112.  
  113. $pattern = '/[0-9]/';
  114. $subject=array('b','fg3','456','sgf','789','fg');
  115. $arr = preg_grep($pattern,$subject);
  116. show($arr);
  117. /*
  118. Array
  119. (
  120. [1] => fg3
  121. [2] => 456
  122. [4] => 789
  123. )
  124. */
  125.  
  126. 4 . preg_split($pattern,$subject)//一匹配成功为切割点切割字符串成数组
  127. 可以理解preg_split()升级版的explode()
  128.  
  129. $pattern = '/[0-9]/';
  130. $subject='bfg3456sgf789fg';
  131. $arr = preg_split($pattern,$subject);
  132. show($arr);
  133. /*
  134. Array
  135. (
  136. [0] => bfg
  137. [1] =>
  138. [2] =>
  139. [3] =>
  140. [4] => sgf
  141. [5] =>
  142. [6] =>
  143. [7] => fg
  144. )
  145. */
  146. 5 . preg_quote($str) 正则运算符转译
  147. /*
  148. * preg_quote($str) 正则运算符转译
  149. * . \ + * ? [ ^ ] $ () {} = ! < > | : -
  150. *
  151. */
  152. echo '<hr>';
  153. $str = "qewr{asdf}[123]";
  154. $str =preg_quote($str);
  155. print_r($str);
  156. /*
  157. qewr\{asdf\}\[123\]
  158. */
  159. 简单总结通性
  160. preg_ 开头
  161. preg_quote函数以外,第一个参数都是正则表达式
  162. preg_match 表单验证等
  163. preg_replace 非法词语过滤等

php中常用的正则表达式函数的更多相关文章

  1. Python常用模块中常用内置函数的具体介绍

    Python作为计算机语言中常用的语言,它具有十分强大的功能,但是你知道Python常用模块I的内置模块中常用内置函数都包括哪些具体的函数吗?以下的文章就是对Python常用模块I的内置模块的常用内置 ...

  2. iOS开发中常用的数学函数

    iOS开发中常用的数学函数 /*---- 常用数学公式 ----*/ //指数运算 3^2 3^3 NSLog(,)); //result 9 NSLog(,)); //result 27 //开平方 ...

  3. 实际项目开发过程中常用C语言函数的9大用法

    C语言是当中最广泛的计算机编程语言,是所有计算机编程语言的祖先,其他计算机编程语言包括当前流行的Java语言,都是用C语言实现的,C语言是编程效率最高的计算机语言,既能完成上层应用开发,也能完成底层硬 ...

  4. Sql 中常用时间处理函数

    1.Sql 中常用时间处理函数  GETDATE()  返回当前的日期和时间 DATEPART()  返回日期/时间的单独部分 DATEADD()   返回日期中添加或减去指定的时间间隔 DATEDI ...

  5. PHP中常用的正则表达式由哪些元素构成?

    在程序开发中,我们常常要用到正则表达式,对于新手来说,很多时候知道正则表达式是怎么回事,但当真正需要使用的时候,却不知该用什么函数,具体的修饰符也比较混乱.下面小编就为大家整理了一些php正则表达式中 ...

  6. JavaScript 中常用的 正则表达式

    这编文章我来整理了一些在 javascript 中常用的正则式希望能给大家带来一些开发的灵感 //校验是否全由数字组成 function isDigit(s) { var patrn=/^[0-9]{ ...

  7. 收集JavaScript中常用的方法函数

    本文中,收集了一些比较常用的Javascript函数,希望对学习JS的朋友们有所帮助. 1. 字符串长度截取 function cutstr(str, len) { var temp, icount ...

  8. js中常用的正则表达式

    我一般对正则的使用方式如下,该方法会返回一个boolean值,然后对这个返回值来进行判断 // 判断是否是整数 function isInt(num) { var reg = new RegExp(& ...

  9. 【Oracle】Oracle中常用的系统函数

    Oracle SQL 提供了用于执行特定操作的专用函数.这些函数大大增强了 SQL 语言的功能.函数可以接受零个或者多个输入参数,并返回一个输出结果.在Oracle还可以自定义函数,关于更多信息可以查 ...

随机推荐

  1. js(=>) 箭头函数 详细解说 案例大全

    ES6标准新增了一种新的函数:Arrow Function(箭头函数). 为什么叫Arrow Function?因为它的定义用的就是一个箭头: x => x * x 上面的箭头函数相当于: fu ...

  2. Ansible拷贝文件遇到的问题

    ansible报错Aborting, target uses selinux but python bindings (libselinux-python) aren't installed 报错内容 ...

  3. SpringRMI远程方法调用【原】

    Spring为各种远程访问技术的集成提供了工具类. 该小段引用自 http://www.open-open.com/lib/view/open1408957290478.html Spring远程支持 ...

  4. VS Code调试Golang提示Failed to continue:Check the debug console for details.

    解决方法: 打开调试面板  VSCode->查看->调试 添加调试目标 在"没有调试"的下拉框中点击"添加配置.."添加目标调试配置 在" ...

  5. HDU - 4324 Triangle LOVE(拓扑排序)

    https://vjudge.net/problem/HDU-4324 题意 每组数据一个n表示n个人,接下n*n的矩阵表示这些人之间的关系,输入一定满足若A不喜欢B则B一定喜欢A,且不会出现A和B相 ...

  6. Ubuntu 16.04下安装zsh和oh-my-zsh

    注意:安装前先备份/etc/passwd 一开始装oh-my-zsh我是拒绝的,因为这东西安装容易,卸载难,真的很难. Mac安装参考:http://www.cnblogs.com/EasonJim/ ...

  7. awk词频统计功能

    [root@test88 ~]# vim word_freq.sh #!/bin/bash if [ $# -ne 1 ];then echo "Usage: $0 filename&quo ...

  8. Python发邮件的小脚本

    # -*- coding: UTF-8 -*- import smtplib from email.mime.text import MIMEText mailto_list = ['hitwh_Gy ...

  9. js中获取时间new date()的用法和获取时间戳

    获取时间: 1 var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getF ...

  10. ROS 错误之 [rospack] Error: package 'beginner_tutorials' not found

    ubuntu 下面情况处理 $ cd $gedit .bashrc 再后面加入两行 source /opt/ros/indigo/setup.bash source /home/lv/catkin_w ...