php 检查字符串长度,最大值和最小值
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/5505227/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Checking string length, max and minimum
提问by john mossel
Is there a function to check if a string is too long or too short, I normally end up writing something like this in several places:
有没有检查字符串是太长还是太短的函数,我通常会在几个地方写这样的东西:
if (strlen($input) < 12)
{
echo "Input is too short, minimum is 12 characters (20 max).";
}
elseif(strlen($input) > 20)
{
echo "Input is too long, maximum is 20 characters.";
}
I know you can easily write one but is there one built into PHP?
我知道您可以轻松地编写一个,但是 PHP 中内置了一个吗?
I normally collect errors as I validate input, so the above code would be written:
我通常在验证输入时收集错误,因此将编写上述代码:
$errors = array();
if (strlen($input) < 12)
{
$errors['field_name'] = "Field Name is too short, minimum is 12 characters (20 max).";
}
elseif(strlen($input) > 20)
{
$errors['field_name'] = "Field Name is too long, maximum is 20 characters.";
}
How can that be made into a function ^?
怎么能把它变成一个函数^?
回答by Rocket Hazmat
I guess you can make a function like this:
我想你可以做一个这样的功能:
function validStrLen($str, $min, $max){
$len = strlen($str);
if($len < $min){
return "Field Name is too short, minimum is $min characters ($max max)";
}
elseif($len > $max){
return "Field Name is too long, maximum is $max characters ($min min).";
}
return TRUE;
}
Then you can do something like this:
然后你可以做这样的事情:
$errors['field_name'] = validStrLen($field, 12, 20);
回答by Muhammad Shahzad
PHP validate minimum and maximum integer number you can use this:
PHP 验证最小和最大整数,你可以使用这个:
$quantity = 2;
if (filter_var($quantity, FILTER_VALIDATE_INT, array("options" => array("min_range"=>1, "max_range"=>10))) === false) {
echo("Quantity is not within the legal range");
} else {
echo("Quantity is within the legal range");
}
回答by Unsigned
How about something like:
怎么样:
$GLOBALS['errors'] = array();
function addError($msg) {
$GLOBALS['errors'][] = $msg;
}
function printErrors() {
foreach ($GLOBALS['errors'] as $err)
echo "$err\n";
}
Just call addError('error message here') as many times as you need, followed by a printErrors() call at the end.
只需根据需要多次调用 addError('error message here'),然后在最后调用 printErrors() 即可。
回答by Naftali aka Neal
you can make a error function that utilizes session vars:
您可以使用会话变量创建一个错误函数:
//at the top of the file:
session_start();
//....code
error("Field Name is too short, minimum is 12 characters (20 max).");
//.. some code
//at the end of the file:
displayErrors();
function error($msg){
if(!isset($_SESSION['errors'])) $_SESSION['errors'] = array();
$_SESSION['errors'][] = $msg;
}
function displayErrors(){
foreach($_SESSION['errors'] as $err){
echo $err.'<br/>'.PHP_EOL;
}
unset($_SESSION['errors']);
}
Demo here: http://codepad.org/TKigVlCj
演示在这里:http: //codepad.org/TKigVlCj
回答by Pixus.ru
/* Helper function */
function validateLength($value, $minLength, $maxLength, $fieldTitle) {
$valueStrLen = strlen($value);
if ($valueStrLen < $minLength) {
return "$fieldTitle is too short, minimum is $minLength characters ($maxLength max).";
} elseif($valueStrLen > $maxLength) {
return "$fieldTitle is too long, maximum is $maxLength characters.";
} else {
return '';
}
}
/* Example of usage */
$errors = array();
if ( $err = validateLength($_GET['user_name'], 12, 20, 'User name') ) {
$errros['user_name'] = $err;
}
if ( $err = validateLength($_GET['user_pass'], 12, 20, 'Password') ) {
$errros['user_pass'] = $err;
}
回答by Brynner Ferreira
function validateLenght($s, $min, $max) {
if (strlen($s) > $max) { return 2; }
elseif (strlen($s) < $min) { return 1; }
else { return 0; }
}
if (validateLenght('test', 5, 20) > 0) {
echo 'Username must be between 5 and 20 characters.';
}