You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何拆分二进制字符串为指定数组?求实现代码片段

解决PHP拆分二进制字符串为指定数组的问题

嘿,我来帮你搞定这个问题!你需要把二进制字符串$code = "10011";拆成array(100,1,1),这里有两种实用的方案,你可以根据需求选择:

方法一:正则表达式(最简洁高效)

正则表达式是处理这类字符串拆分的利器,直接用preg_match_all就能一次性找出所有符合规则的片段:

$code = "10011";
// 匹配规则:优先匹配1后面跟至少一个0的片段,再匹配单个1
preg_match_all('/10+|1/', $code, $matches);
// 将匹配到的字符串转为整数
$codes = array_map('intval', $matches[0]);

// 测试输出
echo $codes[0]; // 输出:100
print_r($codes); // 输出:Array ( [0] => 100 [1] => 1 [2] => 1 )

简单解释下这个正则/10+|1/:

  • 10+:匹配以1开头,后面跟着至少一个0的片段(比如例子里的"100")
  • |1:如果找不到前面的片段,就匹配单个的1
  • 正则默认是贪婪模式,会优先匹配最长的符合规则的片段,正好符合你的需求

方法二:手动遍历(更灵活可控)

如果以后你的拆分规则有变化(比如需要处理更复杂的二进制片段),手动遍历字符串会更灵活,逻辑也更清晰:

$code = "10011";
$codes = [];
$length = strlen($code);
$i = 0;

while ($i < $length) {
    // 遇到1就开始收集片段
    if ($code[$i] === '1') {
        $currentSegment = '1';
        $i++;
        // 收集后面连续的0
        while ($i < $length && $code[$i] === '0') {
            $currentSegment .= $code[$i];
            $i++;
        }
        // 转成整数加入结果数组
        $codes[] = intval($currentSegment);
    } else {
        // 跳过非1的字符(二进制字符串里一般只有0和1,这里做个容错处理)
        $i++;
    }
}

// 测试输出
echo $codes[0]; // 输出:100
print_r($codes); // 输出:Array ( [0] => 100 [1] => 1 [2] => 1 )

这个方法的逻辑很直观:逐个字符扫描字符串,遇到1就把后面连续的0都拼接到一起,形成一个完整的片段,最后转成整数存入数组。

内容的提问来源于stack exchange,提问作者Korty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:37:32