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



我需要找出一种使用 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后跟一些0,或者一个0。由于正则表达式总是尝试按照它们发生的顺序匹配交替的部分,因此第二部分将只匹配前面没有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
)
)

3v4l.org 演示

最新更新