我需要检查通知的变量是否只有 1到10 之间的数字才能继续执行代码。
我尝试了很多方法,使用php本机函数 is_numeric,is_int,ctype_digit ,正则表达式并进行比较以检查变量值是否在范围内,但我遇到了问题。
我的第一次尝试就是:
if($quantity <= 0 || $quantity > 10)
{
redirect('page.php?msg=error');
exit();
}
else
{
//Ok, the value is 1, 2, 3, 4, 5, 6, 7, 8, 9 or 10
}
但是,如果变量是例如:,1
或00001
,则此代码将被传递。 PHP is_number允许小数,is_int允许负数,ctype_digit允许000001。我尝试了所有,我想我只能使用正则表达式来实现这一点。我试过/^[0-9]/
,但只有第一个数字受到影响。如何只允许1到10之间的自然数?
答案 0 :(得分:2)
如果$(document).ready(function(){
$('.glyphicon-plus').on("click", function(){
if($(window).width() > 768) {
console.log
$('???').attr("disabled", "disabled")
}
});
});
来自外部输入,例如$quantity
,$_POST
,$_GET
或$_REQUEST
,则始终会将其解析为字符串。您可以使用filter_input
确保输入转换为适当的类型。
例如,假设您从$_COOKIE
获得此值,并且您希望确保它始终是$_POST["quantity"]
和1
之间的有效整数值。
10
以下是一些测试用例,以证明它可以满足您的需求......
if ($quantity = filter_input(INPUT_POST, "quantity", FILTER_VALIDATE_INT, ["options" => ["min_range" => 1, "max_range" => 10]])) {
// It's a valid value from 1 to 10
} else {
// It's not a valid value we expect :(
}
这应该给你......
$quantity = 1 which is VALID! $quantity = 0 which is NOT valid :( $quantity = 10 which is VALID! $quantity = 11 which is NOT valid :( $quantity = 1 which is VALID! $quantity = 0 which is NOT valid :( $quantity = 10 which is VALID! $quantity = 11 which is NOT valid :( $quantity = 001 which is NOT valid :( $quantity = ,1 which is NOT valid :(
答案 1 :(得分:0)
为什么不以另一种方式攻击它?
void getRgb(GLfloat* pixels1,GLubyte* out)//convert fractional values into color
{
for (int i = 0;i < 90*90;i++)
{
out[(i*3)+0] = pixels1[i]*255;
out[(i*3)+1] = pixels1[i]*255;
out[(i*3)+2] = pixels1[i]*255;
}
}
//gradient generation
multiplier = new GLfloat[90*90];// calc multiplier map
for(int i = 0;i < 90;i++)//2d to 1d
{
for (int j = 0;j < 90;j++)
multiplier[i*90 + j] = cos((j)*(3.14/180));
}
SDL_Surface * image = SDL_CreateRGBSurface(SDL_SWSURFACE, 89, 89, 24, 0x000000FF, 0x0000FF00, 0x00FF0000, 0);
GLubyte* save = new GLubyte[90*90*3];
getRgb(multiplier,save);
image->pixels = save;
std::string path = "map.bmp";
SDL_SaveBMP(image, path.c_str());
delete save;
image->pixels = NULL;
SDL_FreeSurface(image);
在您上面的第一个 if (is_int($quantity) === FALSE)
// Your redirect code
if (strlen(strval(intval($quantity))) != strlen($quantity))
// Your redirect code
之前添加,并解决您的“其他问题”
答案 2 :(得分:0)
你忘记了“10”
$.getJSON('sample.com/json.php', function(data){
$.each(data, function(k,v){
console.log(v);
});
});
答案 3 :(得分:0)
0001
是1
所以就是这样。如果你想保留out循环和正则表达式,你可以执行以下操作。但这确实允许01
,001
和1
。
<?php
$a_number = '0001' + 0; // type juggle (int or float)
echo '<pre>';
var_dump($a_number); // is int(1)
echo '</pre>';
if (is_numeric($a_number)
&& is_int($a_number) // don't allow floats
&& $a_number > 0
&& $a_number <= 10)
{
var_dump($a_number);
echo 'ok!';
exit;
}
else
{
echo 'page.php?msg=error';
exit;
}