使用 preg_split() 在第一次出现特定数字时提取数字的一部分

Using preg_split() to extract a part of a number on first occurrence of a particular number

我试图在第一次出现非零值时提取字符串 0044800 999999 的一部分。我正在使用 preg_split() 因此:

$str = preg_split("/[1-9]/", "0044800 999999", 2);
var_dump($str[1]);

问题是当这个操作完成时,它也删除了匹配的非零数字。例如。 0044800 999999 结果是 4800 999999 而不是 44800 999999

我可能做错了什么?

您可以使用可选的前导零

$str = preg_split("/^0*/", "0044800 999999", 2);
var_dump($str[1]);

输出

string(12) "44800 999999"

或者您可以拆分 1 个或多个前导零,并检查返回的数组是否包含 2 个部分,以防字符串不包含前导零。


您可以使用更精确的方法删除前导零,并使用捕获组来匹配后跟 space 和数字的数字。

$re = '/^0*(\d+(?:\h+\d+)*)$/';
$str = '0044800 999999';
$result = preg_replace($re, '', $str);
var_dump($result);

输出

string(12) "44800 999999"