PHP中基于perl的正则表达式处理函数

所属分类: 网络编程 / 正则表达式 阅读数: 920
收藏 0 赞 0 分享

前面我们已经学习了正则表达式的基础语法,包括了定界符、原子、元字符和模式修正 符。实际上正则表达式想要起作用的话,就必须借用正则表达式处理函数。本节我们就来介绍一下PHP中基于perl的正则表达式处理函数,主要包含了分割, 匹配,查找,替换等等处理操作,依旧是配合示例讲解,让我们开始吧。

和正则表达式一样,正则表达式处理函数不能够独立使用,而这必须相结合,才能够完成特定的功能。在前面我们也说过,基于perl的正则表达式要快于POXIS正则表达式处理函数,所以我们只介绍以preg开头的基于perl的正则表达式。注意:在能偶使用字符串函数处理的时候,就不要使用正则表达式来处理字符串,因为字符串处理函数更快。

下面我们来看一些常用的正则表达式处理函数。

1,preg_match()函数。

函数preg_match()执行一个正则表达式匹配,其定义如下:

int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ) 

实际上就是搜索subject中匹配pattern的部分, 以保存在数组matches中.请看示例:

<?php  
 
   $pattern = '/<b>.*?<\/b>/';  
   $string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>dsadsadas';  
   if (preg_match($pattern, $string, $arr)) {  
     echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>";  
     print_r($arr);  
   } else {  
     echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>";  
   }  
 ?> 

2,preg_match_all()函数。

函数preg_match_all()函数执行一个全局正则表达式匹配,其定义和preg_match()函数一致,只不过匹配了全部结果。请看示例:

<?php  
   $pattern = '/<b>.*?<\/b>/';  
   $string = '<b>welcome</b> <b>to</b> <b>phpfuns</b>dsadsadas';  
   if (preg_match_all($pattern, $string, $arr)) {  
     echo "正则表达式<b>{$pattern}</b>和字符串<b>{$string}</b>匹配成功<br>";  
     print_r($arr);  
   } else {  
     echo "<font color='red'>正则表达式{$pattern}和字符串{$string}匹配失败</font>";  
   }  
 ?> 

依旧是上面的示例(只换了正则处理函数为preg_match_all()),但是匹配的结果数组内容不一样了。

3, preg_replace()函数

函数preg_replace()执行一个正则表达式替换,其定义如下:

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

实际上就是搜索subject中匹配pattern的部分, 以replacement进行替换.其中limit指的是每个模式在每个subject上进行替换的最大次数. 默认是 -1(无限). 如果指定count,将会被填充为完成的替换次数.

注意:

A,如果subject是一个数组, preg_replace()返回一个数组, 其他情况下返回一个字符串.

B,如果匹配被查找到, 替换后的subject被返回, 其他情况下返回没有改变的subject. 如果发生错误, 返回NULL .

C,子模式可以应用到参数replacement中,使用方式为\n或者${n}。(在正则表达式的模式中我们只能使用\n的形式来获取已经匹配的子模式,切记!)

D,如果使用模式修正符e,则参数replacement中可以解析函数。(在其它的正则表达式处理函数中,模式修正符e均被忽略!)

请看下面的综合示例:

<?php  
  $pattern = '/(php)|(mysql)/e';  
  $string = '这个字符串中的php和mysql被替换成大写的了!';  
  $result = preg_replace($pattern, 'strtoupper("${1}\2")', $string, -1, $count);  
  echo $result.'<br>';  
  echo $count;  
?> 

上例中,我们使用了模式修正符e,这样的话strtoupper()函数就可以当作字符串被解析,这就是模式修正符e的作用!而参数${1}和\2分别是子模式1和子模式2。上例的作用就是将字符串$string中匹配到的子模式php和mysql替换成大写字母!

4,preg_split()函数。

preg_split执行一个正则表达式分隔字符串。其定义如下:

array preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] )

实际上就是将subject按照pattern分割,返回分割后的数组。其中,limit将限制分隔得到的子串最多只有limit个, 返回的最后一个子串将包含所有剩余部分.limit值为-1, 0或null时都代表"不限制"。

我们来看一个示例:

<?php  
   $pattern = '/<p>(.*?)<\/p>/';  
   $string = '这个字符串中的<p>php</p>和<p>mysql</p>被分割了!';  
   $result = preg_split($pattern, $string, -1, PREG_SPLIT_DELIM_CAPTURE);  
   print_r($result);  
 ?> 


上例中,我们使用了常量PREG_SPLIT_DELIM_CAPTURE设 置返回结果中包含子模式(如果设置为PREG_SPLIT_NO_EMPTY,preg_split()将进返回分隔后的非空部分。)我们如果把上例中正 则表达式的括号去掉,则结果中不再包含php和mysql这两个匹配成功的子模式。

常用的正则表达式处理函数我们就介绍完了,本节的例子可能会难一些,但希望大家还是认真的试验并体会一下,后面的正则表达式应用部分,我们会经常使用正则表达式处理函数。

以上内容是小编给大家介绍PHP中基于perl的正则表达式处理函数,希望对大家有所帮助。

更多精彩内容其他人还在看

正则表达式验证IPV4地址功能实例分析

这篇文章主要介绍了正则表达式验证IPV4地址功能,结合实例形式分析了IPV4地址验证的原理及具体实现技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

正则表达式教程之前后查找lookaround详解

这篇文章主要介绍了正则表达式教程之前后查找lookaround,结合具体问题分析了向前查找及向后查找功能的实现技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

正则匹配密码只能是数字和字母组合字符串功能【php与js实现】

这篇文章主要介绍了正则匹配密码只能是数字和字母组合字符串功能,涉及针对字符、数字等正则操作相关技巧,并给出了php与js实现示例,需要的朋友可以参考下
收藏 0 赞 0 分享

正则验证不能含有中文的实现方法【jQuery与java实现】

这篇文章主要介绍了正则验证不能含有中文的实现方法,结合jQuery与java两种实现方法分析了针对中文的正则验证操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

JS 密码强度校验的正则表达式(简单且好用)

最近在做一个通行证的项目,在项目中有这样的需求,注册模块中输入密码需要显示密码强度,今天小编给大家分享JS 密码强度校验的正则表达式,简单好用,需要的朋友参考下
收藏 0 赞 0 分享

iOS 正则表达式判断纯数字及匹配11位手机号码的方法

这篇文章主要介绍了iOS 正则表达式判断纯数字及匹配11位手机号码的方法,判断手机号码是否正确的方法很多,我是用正则表达式来完成匹配的,具体方法,大家参考下本文
收藏 0 赞 0 分享

正则表达式(简单易懂篇)

正则表达式是一种可以用于模式匹配和替换的强大工具。这篇文章主要介绍了正则表达式(简单易懂篇),需要的朋友参考下
收藏 0 赞 0 分享

正则表达式实现匹配连续数字的方法

我这两天刚刚学正则表达式。我觉的正则对连续的字符匹配很简单,但是对连续的一段数字匹配就不是很好。正好最近有朋友问了匹配连续数字的正则,就帮忙写了一下,算是当作温习一下吧。下面这篇文章就主要介绍了正则表达式实现匹配连续数字的方法。
收藏 0 赞 0 分享

正则表达式简介及在C++11中的简单使用教程

正则表达式(regular expression)是计算机科学中的一个概念,又称规则表达式,通常简写为regex、regexp、RE、regexps、regexes、regexen。接下来通过本文给大家介绍正则表达式简介及在C++11中的简单使用教程,一起通过本文学习吧
收藏 0 赞 0 分享

正则表达式实现最小匹配功能的方法

这篇文章主要介绍了正则表达式实现最小匹配功能的方法,结合具体实例形式分析了正则表达式最小匹配功能的原理与实现技巧,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多