php 根据循环中的下一个 1 将二进制文件拆分/集群为块

php split / cluster binary into chunks based on next 1 in cycle

我需要找出一种方法,使用 PHP 将 1 和 0 分块。

1001 would look like: array(100,1)


1001110110010011 would look like: array(100,1,1,10,1,100,100,1,1)

序列以 0 开头时会有所不同...我希望它将前 0 分割成它们自己的块,直到到达第一个 1)

00110110 would look like (0,0,1,10,1,10)

如何使用 PHP 完成此操作?

您可以使用 preg_match_all 拆分您的字符串,使用以下正则表达式:

10*|0

这匹配 1 后跟一些 00。由于正则表达式总是尝试按照它们出现的顺序匹配交替的部分,因此第二部分将只匹配前面没有 10,即那些在开始的部分细绳。 PHP 用法:

$beatstr = '1001110110010011';
preg_match_all('/10*|0/', $beatstr, $m);
print_r($m);
$beatstr = '00110110';
preg_match_all('/10*|0/', $beatstr, $m);
print_r($m);

输出:

Array
(
    [0] => Array
        (
            [0] => 100
            [1] => 1
            [2] => 1
            [3] => 10
            [4] => 1
            [5] => 100
            [6] => 100
            [7] => 1
            [8] => 1
        )
)
Array
(
    [0] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 1
            [3] => 10
            [4] => 1
            [5] => 10
        )
)

Demo on 3v4l.org