如何更新此代码:
$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $array);
使用preg_replace_callback函数?
感谢。
答案 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"; )