使用正则表达式 preg_match_all() 配合模式 /\d+/ 可以从字符串中提取所有连续数字序列。该函数会扫描整个输入字符串,将所有匹配到的数字子串收集到一个数组中返回,从而一次性获取所有数值片段。

如何提取字符串中的第一个数字序列
调用 preg_match() 并传入模式 /\d+/ 即可定位首个数字块。该函数在找到第一个匹配项后立即停止搜索,并将结果存入传递的引用变量中,适合只需获取首个数值的场景。

$str = "Order #12345 confirmed";
if (preg_match("/\d+", $str, $matches)) {
echo $matches[0]; // 输出: 12345
}
如何处理包含小数点的浮点数提取
将正则模式修改为 /\d+\.\d+|\d+/ 可以同时匹配整数和浮点数。这种写法优先尝试匹配带小数点的数字,若失败则回退匹配纯整数,确保 12.5 被识别为一个整体而非三个独立数字。

$str = "Price is 12.50 and quantity 5";
preg_match_all("/\d+\.\d+|\d+/", $str, $matches);
print_r($matches[0]);
// 输出: Array ( [0] => 12.50 [1] => 5 )
基于 preg_match_all 返回数组结构的具体问题
preg_match_all() 返回的是一个二维数组结构,其中 $matches[0] 包含所有完整匹配项,而 $matches[1] 等后续索引对应捕获组。若未定义捕获组,仅使用 $matches[0] 即可直接遍历获取所有提取出的数字字符串。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











