【问题标题】:Using preg_replace_callback使用 preg_replace_callback
【发布时间】:2014-01-28 15:45:46
【问题描述】:

如何更新此代码:

$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $array);

使用 preg_replace_callback 函数?

谢谢。

【问题讨论】:

    标签: php preg-replace deprecated preg-replace-callback


    【解决方案1】:

    preg_replace_callback()preg_replace() 非常相似,除了参数2 是一个以$matches 为参数的可调用函数。不要忘记删除 /e 修饰符,因为我们没有执行任何操作。

    $array = array(
        's:1:"test";',
        's:2:"one more";',
    );
    
    $data = preg_replace_callback('!s:(\d+):"(.*?)";!', function($matches) {
        $string = $matches[2];
        $length = strlen($string);
        return 's:' . $length . ':"' . $string . '";';
    }, $array);
    
    print_r($data);
    // Array ( [0] => s:4:"test"; [1] => s:8:"one more"; )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 2017-05-06
      • 1970-01-01
      • 2015-08-09
      • 1970-01-01
      相关资源
      最近更新 更多