栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将数组的var_dump转换回数组变量

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将数组的var_dump转换回数组变量

var_export
或者
serialize
是您要寻找的东西。
var_export
将呈现PHP可解析的数组语法,
serialize
并将呈现非人类可读但可逆的“数组到字符串”转换…

编辑 好吧,挑战:

基本上,我将输出转换为序列化的字符串(然后将其反序列化)。我并不认为这是完美的,但是它似乎可以在我尝试过的一些非常复杂的结构上工作……

function unvar_dump($str) {    if (strpos($str, "n") === false) {        //Add new lines:        $regex = array( '#(\[.*?\]=>)#', '#(string\(|int\(|float\(|array\(|NULL|object\(|})#',        );        $str = preg_replace($regex, "n\1", $str);        $str = trim($str);    }    $regex = array(        '#^\040*NULL\040*$#m',        '#^\s*array\((.*?)\)\s*{\s*$#m',        '#^\s*string\((.*?)\)\s*(.*?)$#m',        '#^\s*int\((.*?)\)\s*$#m',        '#^\s*bool\(true\)\s*$#m',        '#^\s*bool\(false\)\s*$#m',        '#^\s*float\((.*?)\)\s*$#m',        '#^\s*[(\d+)\]\s*=>\s*$#m',        '#\s*?\r?\n\s*#m',    );    $replace = array(        'N',        'a:\1:{',        's:\1:\2',        'i:\1',        'b:1',        'b:0',        'd:\1',        'i:\1',        ';'    );    $serialized = preg_replace($regex, $replace, $str);    $func = create_function(        '$match',         'return "s:".strlen($match[1]).":\"".$match[1]."\"";'    );    $serialized = preg_replace_callback(        '#\s*\["(.*?)"\]\s*=>#',         $func,        $serialized    );    $func = create_function(        '$match',         'return "O:".strlen($match[1]).":\"".$match[1]."\":".$match[2].":{";'    );    $serialized = preg_replace_callback(        '#object\((.*?)\).*?\((\d+)\)\s*{\s*;#',         $func,         $serialized    );    $serialized = preg_replace(        array('#};#', '#{;#'),         array('}', '{'),         $serialized    );    return unserialize($serialized);}

我在一个复杂的结构上进行了测试,例如:

array(4) {  ["foo"]=>  string(8) "Foo"bar""  [0]=>  int(4)  [5]=>  float(43.2)  ["af"]=>  array(3) {    [0]=>    string(3) "123"    [1]=>    object(stdClass)#2 (2) {      ["bar"]=>      string(4) "bart"      ["foo"]=>      array(1) {        [0]=>        string(2) "re"      }    }    [2]=>    NULL  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/594705.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号