PHP Deprecated: preg_replace()问题

在PHP程序中,高低版本之间有函数的过时情况存在。

在高版本的PHP程序中,如果有以下代码:

function get_val($val)
    {
        if (strrpos($val, '[') !== false)
        {
            $val = preg_replace("/\[([^\[\]]*)\]/eis", "'.'.str_replace('$','\$','\\1')", $val);
        }

 }

运行代码调用 get_val函数时

$val = preg_replace("/\[([^\[\]]*)\]/eis", "'.'.str_replace('$','\$','\\1')", $val); 此句可能会出现如下提示:

 PHP Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callabck in .....

只要将函数 preg_replace 用 preg_replace_callabck  函数替代即可。


  function get_val($val)
    {
        if (strrpos($val, '[') !== false)
        {
         $val = preg_replace_callback("/\[([^\[\]]*)\]/is", function($r){return '.'.str_replace('$','\$',$r[1]);}, $val);
        }

  }

例子2:

$string = 'The quick brown fox jumped over the lazy dog.';
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';


echo preg_replace($patterns, $replacements, $string);


echo preg_replace_callback($patterns, function($replacements){ return implode(' ',$replacements);}, $string);

这两句输出的结果一样。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值