PHP 名称验证

标签 php regex validation

我一直在为注册表单创建一些验证,但在验证用户名时遇到错误。

我对名字和姓氏都使用了“测试”的输入,但在应该允许输入时仍然出现错误,因为!preg_match('/^[a-z]*$/i', $value)应该允许小写和大写字符?

此外,我得到的错误似乎只触发名字而不是姓氏。

<?php 
   if (isset($_POST['submit'])){
        require_once 'config.php';

        $errors = [];

        foreach($_POST as $field => $value){
            if($field === 'firstname' || $field === 'lastname' && !preg_match('/^[a-z]*$/i', $value)){
                $errors[] = "{$field} has invalid characters please try again.";
                echo $error;
            }         
        }
}
?>

最佳答案

您在“OR”条件周围缺少括号。 “AND”优先于“OR”。

if(($field === 'firstname' || $field === 'lastname') && !preg_match('/^[a-z]*$/i', $value)){
     $errors[] = "{$field} has invalid characters please try again.";
}

注意:在上面的代码中,您有一个“ undefined variable ”:$error .

关于PHP 名称验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48711226/

相关文章:

php - 自注册组件/插件的设计模式

regex - 基于命名空间或标签的 Amazon AWS S3 IAM 策略

ruby - gsub 部分替换

python - 需要重新审视 Python assertRegexpMatches

php - <div> 之间的差距

php - Silverstripe 页面模板保存到数据库问题

java - 如何在 Java 中验证文本文件内容?

java - 验证 XML 文件

php - 获取表单中包含 MySQL 数据的下拉列表数组

regex - 使用电子邮件地址作为用户名的正则表达式?