php正则替换中逆向引用当参数怎么不行

正则替换中用$1,$2...去获取匹配到的部分字符串,我要把$1,$2...当做别的函数的参数,怎么办。我的代码如下:$str="hello,myemailis[emai... 正则替换中 用$1,$2...去获取匹配到的部分字符串,我要把 $1,$2...当做别的函数的参数,怎么办。
我的代码如下:

$str="hello ,my email is [email] ,keep in contact!!"; //我要用正则匹配出[email],并把它替换成email的字符长度,即5,
也就是说替换完后应该变为hello ,my email is 5 ,keep in contact!!

$str1=preg_replace('/\[(\w+)\]/',strlen('$1'),$str);
echo $str1;

//输出的却是hello ,my email is 2 ,keep in contact!!
也就是说它把'$1'当然字符串来传递了,但是我试了把strlen('$1')换成strlen($1)又会出错,用eval()去修改它也不行
展开
 我来答
百度网友191d45ae4
2009-12-07
知道答主
回答量:18
采纳率:0%
帮助的人:29万
展开全部
呵呵,这确实是个问题
貌似preg_replace 直到最后一步才会把 $1替换成相应的值
而且会直接把传入的函数名字符串化

期待高人

哈哈,高人出现了

刚才看了看手册发现了

$str1 = preg_replace('/\[(\w+)\](.+)/e',"strlen('\\1')",$str);
在表达式后面加个e就好了
哈哈哈
接分接分
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式