【问题标题】:How to use preg_match in php? [closed]如何在 php 中使用 preg_match? [关闭]
【发布时间】:2015-12-16 16:54:59
【问题描述】:
我想创建一个表单验证,并且我想确保用户不会在文本框中输入任何危险代码,所以我想使用preg_match 来做到这一点。
我不喜欢用户输入的是(而不是 a-z 中的单词,A-Z 中的单词和数字)。
现在如何在这里使用preg_match?
【问题讨论】:
标签:
php
html
forms
validation
preg-match
【解决方案1】:
这个正则表达式只允许字母和数字。
/^[A-Z\d]+$/i
在 preg_match 中使用
if(preg_match('/^[A-Z\d]+$/i', $string)) {
echo 'Good';
} else {
echo 'Bad';
}
Regex101 演示:https://regex101.com/r/wH4uQ3/1
^ 和 $ 需要整个字符串匹配(它们是锚点)。 [] 是一个字符类,表示允许其中的任何字符。 + 表示一个或多个前面的字符/组(这称为量词)。 A-Z 是字符类理解为字母a-z 的范围。 \d 是一个数字。 /s 是分隔符,告诉正则表达式从哪里开始和结束。 i 是一个修饰符,使正则表达式不区分大小写(可以删除它并添加 a-z,因此也允许使用小写字母)。
PHP 演示:https://eval.in/486282
注意 PHP 演示失败是因为不允许使用空格。要允许空格,请在字符类中添加\h 或\s(s 包括\h,因此不需要两者;\h 用于水平空格。)。
【解决方案2】:
这是一个简单的例子:
您可以查看更多信息:http://php.net/manual/en/function.preg-match.php
您也可以这样做:$email = htmlspecialchars($_POST['email']);
$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}