preg_replace 的/e问题

php中文网
发布: 2016-06-20 12:44:36
原创
1245人浏览过

由于新版php不能用/e,下面这句要怎么改才正常

preg_replace("/(?正常执行结果是:类别0::::::品名1::::::品牌厂商2::::::规格3::::::1::::::单位5::::::9::::::0
去掉/e,结果变成了:类别0::::::品名1::::::品牌厂商2::::::规格3::::::1::::::单位5::::::10-1::::::0

目的是让内容的原数量减新内容的数量,所以这10和1不是固定的.

VALL-E
VALL-E

VALL-E是一种用于文本到语音生成 (TTS) 的语言建模方法

VALL-E 68
查看详情 VALL-E


回复讨论(解决方案)

e 模式是 eval
就是将第二个参数当做 php 语句执行

一个是算式的结果,一个是算式
你不执行,当然结果就不对了

e 模式是 eval
就是将第二个参数当做 php 语句执行

一个是算式的结果,一个是算式
你不执行,当然结果就不对了



那要怎么改?

$0 不懂是怎么获取的

用 preg_replace_callback
这样第二个参数就是回调函数,你把算式写在函数里就可以了

用 preg_replace_callback
这样第二个参数就是回调函数,你把算式写在函数里就可以了



preg_replace_callback("/(?这样写了,可是$0获取不到,执行什么也没输出了

preg_replace_callback("/(?
这样也不行,

$morefrf[6] 是什么?

问问题的时候要把问题描述清楚,不然人家怎么帮你

$morefrf[6] 是什么?

问问题的时候要把问题描述清楚,不然人家怎么帮你



是数字

如:
$morefrf[6]=1;
preg_replace("/(?

对于

$morefrf[6]=1;preg_replace("/(?<=$so)\d+/eis", '$0 - '.$morefrf[6], $rs,1);
登录后复制

要改写为
$morefrf[6]=1;preg_replace_callback("/(?<=$so)\d+/is", function($m) use($morefrf) { return $m[0] - $morefrf[6]; }, $rs,1);
登录后复制

对于

$morefrf[6]=1;preg_replace("/(?<=$so)\d+/eis", '$0 - '.$morefrf[6], $rs,1);
登录后复制

要改写为
$morefrf[6]=1;preg_replace_callback("/(?<=$so)\d+/is", function($m) use($morefrf) { return $m[0] - $morefrf[6]; }, $rs,1);
登录后复制



可以修改了,谢谢,但还有个错误

正常执行结果是:类别0::::::品名1::::::品牌厂商2::::::规格3::::::1::::::单位5::::::9::::::10
现在变成了:类别0::::::品名1::::::品牌厂商2::::::规格3::::::1::::::单位5::::::9::::::9

也就是,它把后面的10也处理了,怎么解决?

你鸡没有给出原始串,也没有给出期望的结果
谁知到你要做什么呢?

我只能根据你给出的来做

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号