php use后怎么引用函数,php后向引用怎么带入到函数参数

"本文探讨了如何在PHP preg_replace函数中使用回调函数,将匹配到的w+作为参数传递给自定义函数,同时展示了三种不同的实现方式,包括利用全局变量、创建函数和使用use关键字。重点在于避免使用eval,推荐使用preg_replace_callback进行安全高效的操作。"
摘要由CSDN通过智能技术生成

preg_replace('/{get_(\w+)}/',$arr[$1], $content);

$1为后向引用,我需要把匹配的 \w+ 作为参数,传入到自定义函数,或者作为数组的索引,该怎么实现呢

回复讨论(解决方案)

preg_replace_callback 可以回调函数,但是怎么把匹配到的,作为数组的索引,这个我找不到方法

preg_replace('/{get_(\w+)}/e','$arr["$1"]', $content);

$content = '{get_abc}';$arr['abc'] = 123;echo preg_replace('/{get_(\w+)}/e', '$arr["$1"]', $content);

扩展模式 e 表示 eval,表示将第二个参数当做 php 语句来执行

不过这种做法到了 php5.5 就废止了,因为动态解释 php 语句存在效率和安全的问题

合理的做法是使用 preg_replace_callback

下面开列 3 中写法 $content = '{get_abc}';$arr['abc'] = 123;echo preg_replace_callback('/{get_(\w+)}/', 'back', $content);function back($m) { global $arr; return $arr[$m[1]];} $content = '{get_abc}';$arr['abc'] = 123;echo preg_replace_callback('/{get_(\w+)}/', create_function('$m', 'global $arr; return $arr["$m[1]"];'), $content); $content = '{get_abc}';$arr['abc'] = 123;echo preg_replace_callback('/{get_(\w+)}/', function($m) use($arr) { return $arr["$m[1]"];}, $content);显然第 3 种写法最清晰,但只在 php5.3 才开始支持

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值