我非常喜欢这种东西,所以请原谅我这是一个非常愚蠢的问题,但是我修改代码时遇到了麻烦,我只需要一些指导。
无论如何,我需要制作一个允许用户输入3个不同值的表单。第一个输入需要是1-99的整数。第二个输入需要是0.0-10.0的实数。最后一个输入只需要是任何类型的字符串输入(输入可以是任何东西,它不能留空)。
这是我到目前为止所做的:
<?php
if
(is_numeric($_POST['number1'])&&
is_numeric($_POST['number2']))
{
$number1 = $_POST['number1'];
$number2 = $_POST['number2'];
$string1 = $_POST['string1'];
echo "<p>Int Number =
$number1</p>\n";
echo "<p>Real Number =
$number2</p>\n";
echo "<p>String =
$string1</p>\n";
}
else {
echo 'Error. Integer Number must be an integer (1-99), Real Number must
be a real number (0.0-10.0), and String cannot be left blank.
Please go back and fill out the form again.';
}
?>
所以使用这段代码我显然没有设置规则(即第一个数字必须是1-99的整数等)。
我知道我需要为要实现的规则添加if-else语句,但我无法弄清楚正确的方法。
真的很感激任何建议/帮助。
谢谢!
答案 0 :(得分:1)
第一个输入必须是1-99的整数:
if (is_numeric($_POST['number1']))
...
$number1 = +$_POST['number1'];
if (is_int($number1) && $number1 >= 1 && $number1 <= 99)
第二个输入必须是0.0-10.0的实数:
if (is_numeric($_POST['number2']) && strlen(substr(strrchr($_POST['number2'], "."), 1)) === 1)
...
$number2 = +$_POST['number2'];
if ($number2 >= 0 && $number2 <= 10)
最后一个输入只需要是任何类型的字符串输入(输入可以是任何东西,它不能留空):
$string1 = $_POST['string1'];
if (strlen($string1) > 0)
结合在一起,条件是:
$error = true;
if (is_numeric($_POST['number1'])
&& is_numeric($_POST['number2'])
&& strlen(substr(strrchr($_POST['number2'], "."), 1)) === 1) {
$number1 = +$_POST['number1'];
$number2 = +$_POST['number2'];
$string1 = $_POST['string1'];
if (is_int($number1)
&& $number1 >= 1
&& $number1 <= 99
&& $number2 >= 0
&& $number2 <= 10
&& strlen($string1) > 0) {
echo "<p>Int Number =
$number1</p>\n";
echo "<p>Real Number =
".number_format($number2, 1)."</p>\n";
echo "<p>String =
$string1</p>\n";
$error = false;
}
}
if ($error) {
echo 'Error. Integer Number must be an integer (1-99), Real Number must
be a real number (0.0-10.0), and String cannot be left blank.
Please go back and fill out the form again.';
}
答案 1 :(得分:0)
怎么样:
//first rule
function setRule1($var){
if (is_numeric($var)){
if($var < 1 || $var > 99){
return false;
} else return true;
} else return false;
}
//second rule if you need check number of decimal place
function setRule2($var){
if (is_numeric($var)){
if(strlen(array_pop(explode('.',$var))) > 1){//<-- change 1 to desired decimal places.
return false;
} else return true;
} else return false;
}
用法:
if (setRule1($_POST['number1']) && setRule2($_POST['number2']) && $_POST['string1'] != '')//third condistion check if string is blank or not.
{
$number1 = $_POST['number1'];
$number2 = $_POST['number2'];
//and soon...