現在の位置: ホーム> 最新記事一覧> integer入力検証のためにfilter_input_arrayとfilter_validate_intを組み合わせた詳細な手順は何ですか?

integer入力検証のためにfilter_input_arrayとfilter_validate_intを組み合わせた詳細な手順は何ですか?

gitbox 2025-06-13

php开发过程中、获取和验证用户输入是一项非常重要的任务。特别是当我们需要验证整数输入时、使用php内置的过滤函数不仅简洁且高效。本文将详细介绍如使用filter_input_array


一、什么是 filter_input_array和filter_validate_int

  • filter_input_array :这是php中用于一次性过滤多个输入变量的函数。它允许我们定义一个过滤规则数组、针对不同输入项应用不同的过滤规则。

  • filter_validate_int :这是php中用于验证输入是否为有效整数的过滤器。如果输入值是有效整数、则返回该整数、否则返回false

结合这两个功能、可以批量验证多个整型输入、代码简洁且易于维护。


二、使用 filter_input_array结合filter_validate_int

1。

首先、需要准备一个关联数组、数组的键是输入变量名(例如 post 参数名)、值是filter_validate_int 、代表对该输入项应用整数验证。

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$filters</span></span><span> = [
    </span><span><span class="hljs-string">'age'</span></span><span> =&gt; FILTER_VALIDATE_INT,
    </span><span><span class="hljs-string">'id'</span></span><span>  =&gt; FILTER_VALIDATE_INT,
    </span><span><span class="hljs-string">'score'</span></span><span> =&gt; [
        </span><span><span class="hljs-string">'filter'</span></span><span> =&gt; FILTER_VALIDATE_INT,
        </span><span><span class="hljs-string">'options'</span></span><span> =&gt; [
            </span><span><span class="hljs-string">'min_range'</span></span><span> =&gt; </span><span><span class="hljs-number">0</span></span><span>,    </span><span><span class="hljs-comment">// &#35774;&#32622;&#26368;&#23567;&#20540;&#38480;&#21046;&#65288;&#21487;&#36873;&#65289;</span></span><span>
            </span><span><span class="hljs-string">'max_range'</span></span><span> =&gt; </span><span><span class="hljs-number">100</span></span><span>,  </span><span><span class="hljs-comment">// &#35774;&#32622;&#26368;&#22823;&#20540;&#38480;&#21046;&#65288;&#21487;&#36873;&#65289;</span></span><span>
        ]
    ]
];
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

2。调用filter_input_array

使用filter_input_array函数、传入输入类型(如入力入力)、以及上面定义的过滤规则数组。

 <span><span><span class="hljs-meta">&lt;?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">?&gt;</span></span><span>
</span></span>

这里$入力将是一个数组、键对应输入变量名、值为验证后的整数值、若验证失败、则对应值为false

3。

通过遍历或直接判断$入力中各个元素、确定是否所有的输入都通过了整数验证。

 <span><span><span class="hljs-meta">&lt;?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> &amp;&amp; </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> =&gt; </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">"&#21442;&#25968; <span class="hljs-subst">{$key}</span></span></span><span> &#38750;&#27861;&#65292;&#24517;&#39035;&#26159;&#25972;&#25968;&#12290;&lt;br&gt;";
        } </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">"&#21442;&#25968; <span class="hljs-subst">{$key}</span></span></span><span> &#39564;&#35777;&#36890;&#36807;&#65292;&#20540;&#20026;&#65306;</span><span><span class="hljs-subst">{$value}</span></span><span>&lt;br&gt;";
        }
    }
} </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">"&#27809;&#26377;&#33719;&#21462;&#21040;&#36755;&#20837;&#25110;&#36755;&#20837;&#26684;&#24335;&#38169;&#35823;&#12290;"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

4。

假设页面接收年齢を取得する、 IDスコア、其中スコア要求是0到100之间的整数、完整代码如下:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// &#36807;&#28388;&#35268;&#21017;&#25968;&#32452;</span></span><span>
</span><span><span class="hljs-variable">$filters</span></span><span> = [
    </span><span><span class="hljs-string">'age'</span></span><span> =&gt; FILTER_VALIDATE_INT,
    </span><span><span class="hljs-string">'id'</span></span><span>  =&gt; FILTER_VALIDATE_INT,
    </span><span><span class="hljs-string">'score'</span></span><span> =&gt; [
        </span><span><span class="hljs-string">'filter'</span></span><span> =&gt; FILTER_VALIDATE_INT,
        </span><span><span class="hljs-string">'options'</span></span><span> =&gt; [</span><span><span class="hljs-string">'min_range'</span></span><span> =&gt; </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-string">'max_range'</span></span><span> =&gt; </span><span><span class="hljs-number">100</span></span><span>]
    ]
];

</span><span><span class="hljs-comment">// &#33719;&#21462;&#24182;&#39564;&#35777;&#36755;&#20837;</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> &amp;&amp; </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> =&gt; </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">"&#21442;&#25968; <span class="hljs-subst">{$key}</span></span></span><span> &#38750;&#27861;&#65292;&#24517;&#39035;&#26159;&#25351;&#23450;&#33539;&#22260;&#20869;&#30340;&#25972;&#25968;&#12290;&lt;br&gt;";
        } </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">"&#21442;&#25968; <span class="hljs-subst">{$key}</span></span></span><span> &#39564;&#35777;&#36890;&#36807;&#65292;&#20540;&#20026;&#65306;</span><span><span class="hljs-subst">{$value}</span></span><span>&lt;br&gt;";
        }
    }
} </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">"&#26410;&#25509;&#25910;&#21040;&#26377;&#25928;&#36755;&#20837;&#12290;"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

三、总结

使用filter_input_array