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
后跟一些 0
或 0
。由于正则表达式总是尝试按照它们出现的顺序匹配交替的部分,因此第二部分将只匹配前面没有 1
的 0
,即那些在开始的部分细绳。 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
)
)
我需要找出一种方法,使用 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
。由于正则表达式总是尝试按照它们出现的顺序匹配交替的部分,因此第二部分将只匹配前面没有 1
的 0
,即那些在开始的部分细绳。 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
)
)