php文件中现有下面一个字符,
[ 2,[ [001,a],[002,b] ] ](注意:1:前面的2是表面后面有二个数组,2只是个参数,如果是3,那后面会有3个数组信息
       2:若要用[]来拆时请注意,[001,a] 中的a中可能含[],所以要把 [001,a] 当成一个整体)
现要
1 把 [001, a] 与 [002, b] 这二个数组的信息放到一个新数组中
2 在新数组中把 [001, a] 与 [002, b] 这二个数组的信息 输出
怎么实现呀,多谢

解决方案 »

  1.   

    NX,既然是字符串,用PHP字符函数解决,strchr,strstr,strpos等等,最后加上个substr
      

  2.   

    $test0 = '[2,[[001,a],[002,b] ] ]';
    $test1 = '[2,[[001,a],[002,b[]] ] ]';
    $test2 = '[3,[[001,a],[002,b[]],[003,c[]] ] ]';
    $test3 = '[1,[[001,a]]]';$test = str_replace(' ','',$test2);   //each of the string was testing...preg_match('/\[\d+\,\[(.*)\]\]/',$test,$match);
    print_r(split('/\[\,\[/',$match[1]));//output
    Array ( [0] => [001,a],[002,b] )
    Array ( [0] => [001,a],[002,b[]] )
    Array ( [0] => [001,a],[002,b[]],[003,c[]] )
    Array ( [0] => [001,a] )
      

  3.   

    $str    = "[ 2,[ [001,a],[002,b] ] ]";
    $newarr = resolvestr($str);
    /*在这里新数组就是$arr2[1],下面的是把新数组里面的数据输出来*/
    foreach($newarr as $key => $value){
        print_R('新数组中第'.ceil($key+1).'个元素的内容是:'.$value);
        print_R("<br />");
    }
    function resolvestr($str){
        $parrting   = "/\[\s*(\[.*\])\s{1}\]/U";
        preg_match_all($parrting, $str, $arr);
        $paramarr   = $arr[1][0];
        preg_match_all("/(\[.*\])/U", $paramarr, $arr2);
        /*param是指当前这个字串中,有几个参数*/
        $param      = substr($str, 1,2);
        return $arr2[1];
        
    }
    用正则更容易
      

  4.   

    4楼的
    $parrting = "/\[\s*(\[.*\])\s{1}\]/U";
    preg_match_all($parrting, $str, $arr);
    $paramarr = $arr[1][0];
    preg_match_all("/(\[.*\])/U", $paramarr, $arr2);
    什么意思呀,
      

  5.   

    \[ 匹配 [
    \s* 匹配 任意多个空格
    (\[.*\]) 这是一个捕获组在 [ 和 ] 之间可以有任意字符任意多个且由于使用了模式修正符U所以和(\[.*?\])效果相同
    \s{1} 匹配一个空格
    \] 匹配 ]