gpt4 book ai didi

PHP检查字符串是否包含数字并检查字符串长度

转载 作者:行者123 更新时间:2023-12-02 07:00:41 24 4
gpt4 key购买 nike

我正在尝试检查用户名字符串是否全为数字(但该字段不是数字字段)。如果是这样,我需要通过添加前导 0 使字符串长度为 5 个字符。

我有这个代码:

<?php
$getuname = $_GET['un'];

if (mb_strlen($getuname) <= 1){
$getuname = "0".$getuname;
}
if (mb_strlen($getuname) <= 2){
$getuname = "0".$getuname;
}
if (mb_strlen($getuname) <= 3){
$getuname = "0".$getuname;
}
if (mb_strlen($getuname) <= 4){
$getuname = "0".$getuname;
}
echo $getuname;
?>

上面的代码通过添加零来确保字符串是 5 个字符,但它不是很漂亮,我相信有更好的方法来做到这一点。有人吗?

此外,整个部分需要包含在一个 IF 语句中,该语句首先检查它是否只包含数字。我尝试使用!is_numeric,但这似乎不起作用。我假设是因为它不是数字类型字段。

最佳答案

可以使用 is_numeric 来检查数字字段,变量是否为字符串并不重要。 See example here.

然后你可以简单地使用 str_pad()

if(!is_numeric($test))
echo $test . ' is not a number!';
else
echo str_pad($test, 5, 0, STR_PAD_LEFT);

编辑: 正如 flixer 指出的那样, is_numeric() 实际上不会执行您具体要求的操作(检查字符串是否仅包含数字,即没有句点,逗号、破折号等将被视为“数字”)。在这种情况下,请改用 ctype_digit():

$test_number = '123.4';
$test_number2 = '12345';

echo ctype_digit($test_number) ? $test_number . ' is only digits' : $test_number . ' is not only digits';
echo ctype_digit($test_number2) ? $test_number2 . ' is only digits' : $test_number2 . ' is not only digits';

// output:
// 123.4 is not only digits
// 12345 is only digits

这里的关键是avoid regex when you have better tools to do the job.

补充一点,当你传入一个整数变量时,ctype_digit() 可能会返回 false:(来自 PHP 手册的示例)

ctype_digit( '42' ); // true
ctype_digit( 42 ); // false - ASCII 42 is the * symbol

这可能没问题,具体取决于您在其中使用它的情况。在您的情况下,您正在验证一个 $_GET 变量,它始终是一个字符串,所以它不会不会影响你。

文档:

OP 在这里,这就是全部。像魅力一样工作......

   if (ctype_digit($getuname) == true) {
$getuname = str_pad($getuname, 5, 0, STR_PAD_LEFT);
}

关于PHP检查字符串是否包含数字并检查字符串长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21612553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com