我有一个数字数组,例如:
10001234
10002345
现在我有一个数字,它应该与数组中的所有数字相匹配。例如,该数字可以是 10001234(这很容易匹配),但也可以是 100001234(4 个零而不是 3)或 101234(一个零而不是 3)。任何组合都是可能的。唯一固定的部分是最后的1234。
我不能简单地隔离最后 4 个字符,因为所需的值有时可能是 3、5 或 6 位数字的长度(例如 1000123456)。
如果第一个数字总是一个,你可以使用这个
$Num=1000436346;
echo(int)ltrim($Num."","1");
输出:
436346
$number % 10000
将返回数字除以 10000 的余数。意思是最后四位数字。
这个问题并没有让比赛的标准变得非常清楚。不过,我会尝试一下。
首先,我的假设:
数字始终以
1
开头,后跟未知数量的 0
。之后,我们有一个数字序列,可以是任何东西(但可能不是以零开头?),您想从字符串中提取它吗?
鉴于上述情况,我们可以相当容易地制定一个表达式:
$input='10002345';
if(preg_match('/10+(\d+)/',$input,$matches)) {
$output = $matches[1];
}
$output
现在包含数字的第二部分 -- 即 2345
。
如果您需要匹配的不仅仅是前导
1
,您可以将表达式中的 \d
替换为匹配任何数字。并在其后面添加一个加号,以允许此处有多个数字(尽管我们仍然依赖于数字的第一部分和第二部分之间至少有一个零)。
$input='10002345';
if(preg_match('/\d+0+(\d+)/',$input,$matches)) {
$output = $matches[1];
}