php开发过程中、获取和验证用户输入是一项非常重要的任务。特别是当我们需要验证整数输入时、使用php内置的过滤函数不仅简洁且高效。本文将详细介绍如何使用filter_input_array
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函数、传入输入类型(如入力、入力)、以及上面定义的过滤规则数组。
<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>
这里$入力将是一个数组、键对应输入变量名、值为验证后的整数值、若验证失败、则对应值为false 。
通过遍历或直接判断$入力中各个元素、确定是否所有的输入都通过了整数验证。
<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>
假设页面接收年齢を取得する、 IDスコア、其中スコア要求是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