background image

 
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 这两个匹配成功的子模式。

 

 
常用的正则表达式处理函数我们就介绍完了,本节的例子可能会难一些,但希望大家还是