首页 > 解决方案 > PHP - 检查 2 个逗号分隔的整数中的前导 0

问题描述

我有一个带有 2 个逗号分隔整数的用户输入字符串。

示例(确定):

3,5

我想拒绝任何包含前导 0 的用户输入。

例子(坏):

03,5
00005,3
05,003

现在我能做的是将这两个数字分成 2 个单独string的 's 并ltrim在每个数字上使用,然后查看它们是否与ltrim执行之前发生了变化:

$string = "03,5";

$string_arr = explode(",",$string);

$string_orig1 = $string_arr[0];
$string_orig2 = $string_arr[1];

$string_mod1 = ltrim($string_orig1, '0');
$string_mod2 = ltrim($string_orig2, '0');

if (($string_mod1 !== $string_orig1) || ($string_mod2 !== $string_orig2)){
    // One of them had leading zeros!
}

..但这似乎不必要地冗长。有没有更清洁的方法来做到这一点?也许与preg_match

标签: phpregex

解决方案


您可以缩短代码并检查每个部分的第一个字符是否为零:

$string = "03,5";
$string_arr = explode(",",$string);
if ($string_arr[0][0] === "0" || $string_arr[1][0] === "0") {
    echo "not valid";
} else {
    echo "valid";
}

推荐阅读