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

如何使用PHP统计字符串中连续数字块的出现次数?

解决PHP统计字符串中连续数字块次数的问题

嘿,我来帮你搞定这个统计连续数字块的问题!先看看你代码里的问题,再给你正确的实现方案~

你的代码为什么输出0?

你写的正则表达式!/_[0-9]_/!有几个关键问题:

  • 分隔符用了!,但里面多余的/是错误的,应该去掉;
  • [0-9]只能匹配单个数字,没法匹配像876这种连续多位的数字块;
  • 正则要求数字的前后必须是下划线,这就漏掉了比如tr_766_ 756里空格后面的756这种情况。

这些问题加起来,自然匹配不到任何结果,所以输出0啦。

正确的实现方法

我们需要用正则匹配一个或多个连续的数字,对应的正则是/\d+/:

  • \d:等价于[0-9],匹配任意单个数字;
  • +:表示匹配前面的元素(这里是数字)一次或多次,刚好对应连续的数字块。

用preg_match_all执行这个正则,它的返回值就是匹配到的数字块数量,直接拿来用就好。

示例代码:

// 测试你的示例字符串
$str = "RT_657_YT_89";
// 匹配所有连续数字块,结果会存在$matches数组中(如果不需要具体匹配内容可以忽略这个参数)
$count = preg_match_all('/\d+/', $str, $matches);
echo $count; // 输出2,对应657和89两个数字块

// 再测试你给的其他例子
$str2 = "rt_876_io_542_po_367";
echo preg_match_all('/\d+/', $str2, $matches); // 输出3
$str3 = "tr_766_ 756";
echo preg_match_all('/\d+/', $str3, $matches); // 输出2

这样就能准确统计所有连续数字块的出现次数啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:10:17