是这样的,使用正则将匹配的连续4个数字加上一个括号,数字不变。
<?php $s='wqe2313jyu6y6546iuoi';$s=preg_replace('/(\d{4})/','{${1}}',$s);print($s);?>运行结果:wqe{2313}jyu6y{6546}iuoi
<?php $s='wqe2313jyu6y6546iuoi';$s=preg_replace('/(\d{4})/','{${1}}',$s);print($s);?>运行结果:wqe{2313}jyu6y{6546}iuoi
我把正则表达式写在数组里面去了,你这个方法又不行了,在数组里面必须是${0}才行
<?php $s='wqe2313jyu6y6546iuoi';$s=preg_replace('/(\d{4})/','{${1}}',$s);print($s);?>运行结果:wqe{2313}jyu6y{6546}iuoi
/(\d{4})/
[$1]
反向引用的数字表示正则式从左向右数第几对圆括号内的内容,注意 (?...)不计算在内
当有歧义时才需要使用{}
例如反向引用后面要补一个数字就会产生歧义,要写成${1}1??表示反向引用第一对括号内容,后面加数字1
但$11则是反向引用第 十一对括号的内容(如果没有那么多括号就为空)
/((?:123)456(789))/
$1得到123456789
$2得到789
/(\d{4})/
[$1]
反向引用的数字表示正则式从左向右数第几对圆括号内的内容,注意 (?...)不计算在内
当有歧义时才需要使用{}
例如反向引用后面要补一个数字就会产生歧义,要写成${1}1??表示反向引用第一对括号内容,后面加数字1
但$11则是反向引用第 十一对括号的内容(如果没有那么多括号就为空)
我是:/(\d){4}/i
你是:/(\d{4})/
这两个居然不一样?求解???????????
已经弄清楚了,谢谢
子表达式
捕获
反向引用
感谢各位!