找回密码
 注册账号

QQ登录

只需一步,快速开始

《泰拉瑞亚下载-1.4.2.3版》 泰拉瑞亚服务器 - MOD模组下载

入驻泰拉战网 新手指引 - 升级 - 师徒

泰拉瑞亚合成表 泰拉卡牌 - 泰拉江湖 - 泰拉刺客

联系泰拉开发组👈进入 积分市场 - 房产交易 - 水晶获取

查看: 2672|回复: 0

[原生PHP] php7中使用preg_replace_callback()替代preg_replace()

[复制链接]

498

主题

18

回帖

5

广播

论坛版主

积分
257
泰拉
22
水晶
1
铜钥匙
0
银钥匙
0
金钥匙
0

【江湖新秀】【宝剑回鞘】【泰拉达人】【奥运选手】

发表于 2020-9-7 13:36:41 | 显示全部楼层 |阅读模式
php7中,preg_replace()不再支持"\e" (PREG_REPLACE_EVAL),需要使用preg_replace_callback()来代替。

看例子来说吧
$content = preg_replace("/{#(.+?)}/eis", '$lang[\'\\1\']', $content) ;
这是原来的代码,在php7里不能被正确执行。

$content = preg_replace_callback("/{#(.+?)}/is", function($r)use($lang){ return $lang[$r[1]]; }, $content);
这是改过之后的代码

需要注意:
1. preg_replace_callback第二个参数,callback()函数里,如果需要使用外部的变量,可以使用function callback($matchs)use($xxx){}
2. callback() 回调函数里,return 值会替换匹配到的内容

[发帖际遇]: 君山 在论坛发帖时没有注意,被小偷偷去了 2 泰拉. 幸运榜 / 衰神榜
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|友链申请|Archiver|手机版|小黑屋|游芯沙盒 ( 陕ICP备11006283号-1 )

GMT+8, 2024-5-3 17:53 , Processed in 0.114898 second(s), 36 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表