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 这两个匹配成功的子模式。
常用的正则表达式处理函数我们就介绍完了,本节的例子可能会难一些,但希望大家还是