如何检查$ _POST ['input']是否仅包含允许的字符

时间:2019-01-17 12:47:11

标签: php validation input

如何检查输入是否仅包含一个或多个以下允许的字符之一: a-zA-Z0-9

所以我的支票必须看起来像这样:

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

2 个答案:

答案 0 :(得分:5)

您可以使用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修饰符来简化后两个正则表达式(不区分大小写):< / p>

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

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

答案 1 :(得分:1)

您只需使用preg_match()即可获得所需的结果,例如:

<?php
$string = 'Mike123'; // string
if(preg_match("/^[a-zA-Z0-9]+$/", $string)) {
  echo 'do nothing';
}
else{
  echo 'do something';
}
?>

编辑: 简短说明:由于OP已接受正确且完整的答案,因此我正在修改我对未来访客的回答。

您还可以使用ctype_alnum()方法来获得所需的结果,该方法用于检查字符串中的字母数字字符。

示例:

<?php
$string = 'Mike123';
if (ctype_alnum($string)) {
    echo "do nothing"; 
} else {
    echo "do something";
}
?>