>  기사  >  백엔드 개발  >  preg_replace 的/e问题

preg_replace 的/e问题

WBOY
WBOY원래의
2016-06-20 12:44:361080검색

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

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

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


回复讨论(解决方案)

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也处理了,怎么解决?

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

我只能根据你给出的来做

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.