首页 > 解决方案 > 不再支持 /e 修饰符

问题描述

嗨,我正在使用这个 preg_replace_callback

$data = "a:6:{s:4:"home";s:32:"Rue d'Alsace Lorraine, Toulouse";s:6:"school";s:30:"Avenue de Fronton, Saint-Alban";s:9:"last_name";s:5:"Devis";s:10:"first_name";s:4:"Test";s:5:"phone";s:10:"0611223344";s:12:"got-distance";s:1:"1";}";


$data = preg_replace_callback(
    '!s:(\d+):"(.*?)";!se',
    function($matches) { return "'s:'.strlen('$2').':\"$2\";'"; },
    $data
);

但我的函数返回 null 因为不支持 e 修饰符,任何人都可以帮助解决这个问题,我想我需要更改正则表达式,但我不擅长正则表达式。

这样做的目的是将 $data 传递给反序列化函数。

标签: phpregexphp-7

解决方案


推荐阅读