作者: 溪水清澈
举例如下:
$arr =array( 'abc', 'def', 'ghi' );
$brr =array( 'opq', 'rst', 'xyz' );
$pattern= '/:(\d+)/e';
$subject= '/:2/:1/:0/';
$str =preg_replace( $pattern, '$arr[$1] . $brr[$1]',$subject );
echo $str; //输出为: /ghixyz/defrst/abcopq/
e模式, 只限用于preg_replace()函数,
preg_replace( 搜索模式, 替换字符串, 搜索目标 );
e模式可以把
替换字符串(上例中的'$arr[$1]. $brr[$1]')
中的内容当成一个PHP表达式
(仅仅是一个, 也就是不能有分号)
(上例中是两个数组元素进行字符串拼接),
先进行反向引用替换
(上例中的$1, 替换成捕获到的数字,
结果就是(假设捕获到了数字2: '$arr[2] . $brr[2]'),
再进行PHP表达式替换
(把'$arr[2] . $brr[2]'中的数组元素替换成相应的值,
结果为: 'ghixyz')
最后替换掉 搜索目标 中相应的字符串(此处为把 :2 替换成 'ghixyz')
所以第一个匹配替换后的结果就是 '/ghixyz/:1/:0/'
第二替换结果是 '/ghixyz/defrst/:0/'
第三也就是最终结果是 '/ghixyz/de