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] 这二个数组的信息 输出
怎么实现呀,多谢
[ 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] 这二个数组的信息 输出
怎么实现呀,多谢
$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] )
$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];
}
用正则更容易
$parrting = "/\[\s*(\[.*\])\s{1}\]/U";
preg_match_all($parrting, $str, $arr);
$paramarr = $arr[1][0];
preg_match_all("/(\[.*\])/U", $paramarr, $arr2);
什么意思呀,
\s* 匹配 任意多个空格
(\[.*\]) 这是一个捕获组在 [ 和 ] 之间可以有任意字符任意多个且由于使用了模式修正符U所以和(\[.*?\])效果相同
\s{1} 匹配一个空格
\] 匹配 ]