如何更新此代码:
$data = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $array);
使用preg_replace_callback函数?谢谢
ddhy6vgd1#
preg_replace_callback()与preg_replace()非常相似,除了参数2是一个以$matches为参数的可调用函数。不要忘记删除/e修饰符,因为我们没有执行任何操作。
preg_replace_callback()
preg_replace()
$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"; )
1条答案
按热度按时间ddhy6vgd1#
preg_replace_callback()
与preg_replace()
非常相似,除了参数2是一个以$matches
为参数的可调用函数。不要忘记删除/e
修饰符,因为我们没有执行任何操作。