从print_r输出重新创建原始PHP数组

从print_r输出重新创建原始PHP数组,第1张

从print_r输出重新创建原始PHP数组
function print_r_reverse($in) {    $lines = explode("n", trim($in));    if (trim($lines[0]) != 'Array') {        // bottomed out to something that isn't an array        return $in;    } else {        // this is an array, lets parse it        if (preg_match("/(s{5,})(/", $lines[1], $match)) { // this is a tested array/recursive call to this function // take a set of spaces off the beginning $spaces = $match[1]; $spaces_length = strlen($spaces); $lines_total = count($lines); for ($i = 0; $i < $lines_total; $i++) {     if (substr($lines[$i], 0, $spaces_length) == $spaces) {         $lines[$i] = substr($lines[$i], $spaces_length);     } }        }        array_shift($lines); // Array        array_shift($lines); // (        array_pop($lines); // )        $in = implode("n", $lines);        // make sure we only match stuff with 4 preceding spaces (stuff for this array and not a nested one)        preg_match_all("/^s{4}[(.+?)] => /m", $in, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);        $pos = array();        $previous_key = '';        $in_length = strlen($in);        // store the following in $pos:        // array with key = key of the parsed array's item        // value = array(start position in $in, $end position in $in)        foreach ($matches as $match) { $key = $match[1][0]; $start = $match[0][1] + strlen($match[0][0]); $pos[$key] = array($start, $in_length); if ($previous_key != '') $pos[$previous_key][1] = $match[0][1] - 1; $previous_key = $key;        }        $ret = array();        foreach ($pos as $key => $where) { // recursively see if the parsed out value is an array too $ret[$key] = print_r_reverse(substr($in, $where[0], $where[1] - $where[0]));        }        return $ret;    }}

不是我的代码,请在注释中找到:print_r’Matt ‘是所有者



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5084917.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存