首页 > 解决方案 > 如何检查 $_POST ['input'] 是否仅包含允许的字符

问题描述

我如何检查输入是否仅包含一个或多个以下允许的字符之一: a-z, A-Z,0-9

所以我的支票必须是这样的:

if ($_POST ['input'] != 'a-z, A-Z, 0-9') {
exit;
}
else {
//do stuff

标签: phpvalidationinput

解决方案


您可以使用它preg_match来测试您的输入数据。如果您想要每个字符集中的至少一个,您可以使用

if (preg_match('/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])/', $_POST['input'])) {
    // do stuff
}

(这个正则表达式使用 3 个正向前瞻来确保三组中的每一个都有一个字符)

如果您只想要整个集合中的一个或多个,您可以使用

if (preg_match('/[a-zA-Z0-9]/', $_POST['input']))

如果您希望所有字符都在该集合中,您可以使用

if (preg_match('/^[a-zA-Z0-9]+$/', $_POST['input']))

我在3v4l.org上对每个正则表达式进行了一些演示

请注意,只要您想要同时设置A-Za-z,您可以通过使用正则表达式上的修饰符来简化后两个i正则表达式(不区分大小写):

if (preg_match('/[A-Z0-9]/i', $_POST['input']))

if (preg_match('/^[A-Z0-9]+$/i', $_POST['input']))

推荐阅读