在php開發過程中,獲取和驗證用戶輸入是一項非常重要的任務。特別是當我們需要驗證整數輸入時,使用php filter_input_array函數配合filter_validate_int過濾器,完成整數輸入的驗證。 ,完成整數輸入的驗證。
filter_input_array :這是php中用於一次性過濾多個輸入變量的函數。它允許我們定義一個過濾規則數組,針對不同輸入項應用不同的過濾規則。
filter_validate_int :這是php中用於驗證輸入是否為有效整數的過濾器。如果輸入值是有效整數,則返回該整數,否則返回, false 。
結合這兩個功能,可以批量驗證多個整型輸入,代碼簡潔且易於維護。 ,代碼簡潔且易於維護。
首先,需要準備一個關聯數組,數組的鍵是輸入變量名(例如,數組的鍵是輸入變量名(例如
<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>
這裡$輸入將是一個數組,鍵對應輸入變量名,值為驗證後的整數值,若驗證失敗,則對應值為, 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>
假設頁面接收get請求參數年齡, 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結合filter_validate_int可以非常方便地批量驗證整數輸入