使用preg_replace_callback

时间:2014-01-09 21:14:35

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

如何更新此代码:

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

使用preg_replace_callback函数?

感谢。

1 个答案:

答案 0 :(得分:3)

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"; )