在 php 开发过程中 , 获取和验证用户输入是一项非常重要的任务。特别是当我们需要验证整数输入时 , 使用 php 内置的过滤函数不仅简洁且高效。本文将详细介绍如何使用filter_input_array函数配合filter_valate_int过滤器 , 完成整数输入的验证。 完成整数输入的验证。 完成整数输入的验证。
filter_input_array : 这是 php 中用于一次性过滤多个输入变量的函数。它允许我们定义一个过滤规则数组 , 针对不同输入项应用不同的过滤规则。
Filter_validate_int : 这是 php 中用于验证输入是否为有效整数的过滤器。如果输入值是有效整数 , 则返回该整数 , 否则返回false 。
结合这两个功能 , 可以批量验证多个整型输入 , 代码简洁且易于维护。 代码简洁且易于维护。
首先 , 需要准备一个关联数组 , 数组的键是输入变量名(例如 数组的键是输入变量名(例如 post 参数名) , 值是 filter_validate_int , 代表对该输入项应用整数验证。 代表对该输入项应用整数验证。 代表对该输入项应用整数验证。 代表对该输入项应用整数验证。 代表对该输入项应用整数验证。 代表对该输入项应用整数验证。 , , 代表对该输入项应用整数验证。 代表对该输入项应用整数验证。 代表对该输入项应用整数验证。 代表对该输入项应用整数验证。 代表对该输入项应用整数验证。 代表对该输入项应用整数验证。 代表对该输入项应用整数验证。 代表对该输入项应用整数验证。 代表对该输入项应用整数验证。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$filters</span></span><span> = [
</span><span><span class="hljs-string">'age'</span></span><span> => FILTER_VALIDATE_INT,
</span><span><span class="hljs-string">'id'</span></span><span> => FILTER_VALIDATE_INT,
</span><span><span class="hljs-string">'score'</span></span><span> => [
</span><span><span class="hljs-string">'filter'</span></span><span> => FILTER_VALIDATE_INT,
</span><span><span class="hljs-string">'options'</span></span><span> => [
</span><span><span class="hljs-string">'min_range'</span></span><span> => </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-comment">// 设置最小值限制(可选)</span></span><span>
</span><span><span class="hljs-string">'max_range'</span></span><span> => </span><span><span class="hljs-number">100</span></span><span>, </span><span><span class="hljs-comment">// 设置最大值限制(可选)</span></span><span>
]
]
];
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
使用filter_input_array函数 , 传入输入类型(如input_get 、 input_post ) , 以及上面定义的过滤规则数组。 以及上面定义的过滤规则数组。 以及上面定义的过滤规则数组。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$input</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filter_input_array</span></span><span>(INPUT_GET, </span><span><span class="hljs-variable">$filters</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
这里$ Eingabe将是一个数组 , 键对应输入变量名 , 值为验证后的整数值 , 若验证失败 , 则对应值为falsch 。
通过遍历或直接判断$ Input中各个元素 , 确定是否所有的输入都通过了整数验证。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$input</span></span><span> !== </span><span><span class="hljs-literal">null</span></span><span> && </span><span><span class="hljs-variable">$input</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$input</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span> => </span><span><span class="hljs-variable">$value</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$value</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"参数 <span class="hljs-subst">{$key}</span></span></span><span> 非法,必须是整数。<br>";
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"参数 <span class="hljs-subst">{$key}</span></span></span><span> 验证通过,值为:</span><span><span class="hljs-subst">{$value}</span></span><span><br>";
}
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"没有获取到输入或输入格式错误。"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
假设页面接收 Get 请求参数Alter 、 id和Punktzahl , 其中Punktzahl要求是 0 到 100 之间的整数 , : :
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 过滤规则数组</span></span><span>
</span><span><span class="hljs-variable">$filters</span></span><span> = [
</span><span><span class="hljs-string">'age'</span></span><span> => FILTER_VALIDATE_INT,
</span><span><span class="hljs-string">'id'</span></span><span> => FILTER_VALIDATE_INT,
</span><span><span class="hljs-string">'score'</span></span><span> => [
</span><span><span class="hljs-string">'filter'</span></span><span> => FILTER_VALIDATE_INT,
</span><span><span class="hljs-string">'options'</span></span><span> => [</span><span><span class="hljs-string">'min_range'</span></span><span> => </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-string">'max_range'</span></span><span> => </span><span><span class="hljs-number">100</span></span><span>]
]
];
</span><span><span class="hljs-comment">// 获取并验证输入</span></span><span>
</span><span><span class="hljs-variable">$input</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filter_input_array</span></span><span>(INPUT_GET, </span><span><span class="hljs-variable">$filters</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$input</span></span><span> !== </span><span><span class="hljs-literal">null</span></span><span> && </span><span><span class="hljs-variable">$input</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$input</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span> => </span><span><span class="hljs-variable">$value</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$value</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"参数 <span class="hljs-subst">{$key}</span></span></span><span> 非法,必须是指定范围内的整数。<br>";
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"参数 <span class="hljs-subst">{$key}</span></span></span><span> 验证通过,值为:</span><span><span class="hljs-subst">{$value}</span></span><span><br>";
}
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"未接收到有效输入。"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
使用filter_input_array结合filter_validate_int可以非常方便地批量验证整数输入 , 代码简洁且易读。配合Optionen参数还能实现范围限制 , 满足多种场景需求。建议在获取用户输入时尽量使用 php 自带的过滤器 , 以提升代码的安全性和稳定性。 以提升代码的安全性和稳定性。 以提升代码的安全性和稳定性。