当前位置:首页 > PHP教程 > 正则表达式 > 列表

PHP正则表达式处理函数(PCRE 函数)实例小结

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-22 14:04:43 浏览: 评论:0 

这篇文章主要介绍了PHP正则表达式处理函数(PCRE 函数),结合实例形式总结分析了php正则表达式preg_replace、preg_match、preg_match_all、preg_split及preg_quote等函数相关使用技巧,需要的朋友可以参考下。

本文实例讲述了PHP正则表达式处理函数,分享给大家供大家参考,具体如下:

有时候在一些特定的业务场景中需要匹配,或者提取一些关键的信息,例如匹配网页中的一些链接,提取一些数据时,可能会用到正则匹配。

下面介绍一下php中的一些常用的正则处理函数。

一、preg_replace($pattern,$replacement,$subject)

执行一个正则表达式的搜索和替换。

  1. <?php 
  2.   echo "<pre>"
  3.   $str = "12,34:56;784;35,67:897:65"
  4.   //要求将上面的:,;都换成空格 
  5.   print_r(preg_replace("/[,;:]/"," ",$str)); 
  6. ?> 

输出

12 34 56 784 35 67 897 65

二、preg_match($pattern,$subject,&$matches)

执行匹配正则表达式

  1. <?php 
  2.   echo "<pre>"
  3.   $str = "<a href=\"https://www.baidu.com\">团购商品</a>"
  4.   //匹配出链接地址 
  5.   preg_match("/<a href=\"(.*?)\">.*?<\/a>/",$str,$res); 
  6.   print_r($res); 
  7. ?> 

输出

  1. Array 
  2.     [0] => 团购商品 
  3.     [1] => https://www.phpfensi.com 

三、preg_match_all($pattern,$subject,&$matches)

执行一个全局正则表达式匹配

  1. <?php 
  2.   echo "<pre>"
  3.   $str=<<<EOF 
  4.   <div> 
  5.     <a href="index.php" rel="external nofollow" >首页</a> 
  6.     <a href="category.php?id=3" rel="external nofollow" >GSM手机</a> 
  7.     <a href="category.php?id=4" rel="external nofollow" >双模手机</a> 
  8.     <a href="category.php?id=6" rel="external nofollow" >手机配件</a> 
  9.   </div> 
  10. EOF; 
  11.   //使用全局正则匹配 
  12.   preg_match_all("/<a href=\"(.*?)\">(.*?)<\/a>/s",$str,$res); 
  13.   print_r($res); 
  14. ?> 

输出

  1. Array 
  2.     [0] => Array 
  3.         ( 
  4.             [0] => 首页 
  5.             [1] => GSM手机 
  6.             [2] => 双模手机 
  7.             [3] => 手机配件 
  8.         ) 
  9.     [1] => Array 
  10.         ( 
  11.             [0] => index.php 
  12.             [1] => category.php?id=3 
  13.             [2] => category.php?id=4 
  14.             [3] => category.php?id=6 
  15.         ) 
  16.     [2] => Array 
  17.         ( 
  18.             [0] => 首页 
  19.             [1] => GSM手机 
  20.             [2] => 双模手机 
  21.             [3] => 手机配件 
  22.         ) 

四、preg_split($pattern,$subject)

通过一个正则表达式分隔字符串

  1. <?php 
  2.   echo "<pre>"
  3.   $str = "12,34:56;784;35,67:897:65"
  4.   //分隔字符串 
  5.   $arr = preg_split("/[,;:]/",$str); 
  6.   print_r($arr); 
  7. ?> 

输出

  1. Array 
  2.     [0] => 12 
  3.     [1] => 34 
  4.     [2] => 56 
  5.     [3] => 784 
  6.     [4] => 35 
  7.     [5] => 67 
  8.     [6] => 897 
  9.     [7] => 65 

五、preg_quote($str)

转义正则表达式字符

正则表达式特殊字符有:. \ + * ? [ ^ ] $ ( ) { } = ! < > : -

  1. <?php 
  2.   echo "<pre>"
  3.   echo preg_quote("(abc){10}");//在每个正则表达式语法的字符前增加一个反斜杠 
  4. ?> 

输出

\(abc\)\{10\}

六、子存储

  1. <?php 
  2.   echo "<pre>"
  3.   //子存储使用 
  4.   $date="[2012-08-09],[2012,09-19],[2011/08,09],[2012/10/09],[2013,08,01]"
  5.   //将上面字串中合法的日期匹配出来 
  6.   preg_match_all("/\[[0-9]{4}([\-,\/])[0-9]{2}\\1[0-9]{2}\]/",$date,$a); 
  7.   print_r($a); 
  8. ?> 

输出

  1. Array 
  2.     [0] => Array 
  3.         ( 
  4.             [0] => [2012-08-09] 
  5.             [1] => [2012/10/09] 
  6.             [2] => [2013,08,01] 
  7.         ) 
  8.     [1] => Array 
  9.         ( 
  10.             [0] => - 
  11.             [1] => / 
  12.             [2] => , 
  13.         ) 
  14. )

Tags: PHP正则表达式 PCRE

分享到: