【发布时间】: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
如何更新此代码:
$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $array);
使用 preg_replace_callback 函数?
谢谢。
【问题讨论】:
标签: php preg-replace deprecated preg-replace-callback
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"; )
【讨论】: