【发布时间】:2014-03-03 23:13:48
【问题描述】:
我正在尝试检查用户名字符串是否全为数字(但该字段不是数字字段)。如果是这样,我需要通过添加前导 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,但这似乎不起作用。我假设是因为它不是数字类型字段。
【问题讨论】:
-
使用
preg_match检查用户名是否只包含数字es1.php.net/preg_match -
tas9 完全正确,preg_match 是检查这一点的最佳解决方案。 is_int 和 is_numeric 在这种情况下不可靠。
-
仅供参考:对于超过 100 万次的速度测试,
ctype_digit耗时 0.114777 秒,正则表达式解决方案耗时 0.783449 秒