Php - 获取数字,而不是来自字符串的char

0 php arrays string substring

我不熟悉php,在这种情况下陷入了如何使用substr的困境:

我必须对包含一些数字和符号的字符串进行解析,例如:

1[2[3,5],4[7[65,9,11],8]]
Run Code Online (Sandbox Code Playgroud)

为了做到这一点,我使用了一个将通过并获取字符串的每个字符串,类似的东西:

$count = 0;
for($i = 0; $i <= strlen($string); $i++){
    $char = substr($string, $i, 1);
    if($char == '['){
        $count --;
    }
    if($char == ']'){
        $count ++;
    }
    if($count == 0){
        break;
    }

    if(is_numeric(substr($string, $i +1, 1)) and $count == -1){
        $number = substr($string, $i +1, 1);
        $array_aux[] = $number;
    }

}
Run Code Online (Sandbox Code Playgroud)

但是,当我越来越在CHAR(SUBSTR($字符串,$ I,1)),它并不适用于数字与一个以上的数字工作,如65和11

并且数组的内容类似于:(...,6,5,9,1,1,......)

什么时候应该是这样的:(......,65,9,11 ......)

有帮助吗?

对不起,我觉得还不够清楚.当count计数值为-1时,我需要'['里面的数字

(这就是为什么我使用substr,并采取每个字符)

示例:当字符串为:1 [2 [3,5],4 [7 [65,9,11],8]]时,数组必须包含2和4

当字符串为:2 [3,5],4 [7 [65,9,11],8]]时,数组必须包含3和5

当字符串是:7 [65,9,11],8]]时,数组必须包含65,9和11.依此类推......

对不起,现在才把这些细节,我没有电脑:(

Sco*_*ots 6

preg_match_all 使用简单的正则表达式可以为您执行此操作:

$in = "1[2[3,5],4[7[65,9,11],8]]";
preg_match_all('~\d+~', $in, $out);
print_r($out[0]);
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 5
    [4] => 4
    [5] => 7
    [6] => 65
    [7] => 9
    [8] => 11
    [9] => 8
)
Run Code Online (Sandbox Code Playgroud)