php - PHP 的数据验证包?

标签 php mysql html validation forms

愚蠢的问题。

我有一个用 PHP 开发的项目;它是客户的注册表,最终将写入 MySQL 数据库。我已经得到了对涉及的字段进行数据验证的表单,并且我已经在使用一些 PHP 的内置 filter functions .

但是,出于不同的目的,我有很多字段需要验证 - 例如,我有电子邮件地址和网址要验证(包含在过滤器包中),但我已经还必须验证电话号码、邮政编码、地址和姓名(应仅匹配特定字符集)。

现在,我的解决方案包含大量用于验证字段的 if-then 语句。例如,对于邮政编码,我使用 ctype_digit 验证它是否为数字,然后使用 strlen 检查长度。 (我可以将所有东西封装在一个对象中——一旦我让所有东西都按实际应该的方式工作,我可能会这样做——但这还有一段路要走。)有谁知道第三方类会做这样的事情?或者,如果不是,至少有一种方法可以验证特定的输入类型,而无需根据输入名称求助于 if 语句。因为它真的不可扩展吗?

如果我需要编辑此问题或添加任何内容,请告诉我。谢谢。

最佳答案

查看 FILTER_VALIDATE_REGEXP .它允许您进行自己的自定义验证。

$filter_zip_options = array( "options" => array( "regexp" => "/^[0-9]{5}$/" ) );
var_dump( (bool)filter_var( "99999", FILTER_VALIDATE_REGEXP, $filter_zip_options ) ); //bool(true)
var_dump( (bool)filter_var( "991999", FILTER_VALIDATE_REGEXP, $filter_zip_options ) ); //bool(false)

如果你讨厌正则表达式,你也可以使用 FILTER_CALLBACK .

//To use a closure as an in place callback you need PHP 5.3
var_dump( filter_var( "Kendall", FILTER_CALLBACK, array( "options" => function( $input ) {
    //check if it's 1 or 2 words
    if( count( explode( " ", $input ) ) > 2 )
        return FALSE;

    return "Hello world $input";
} ) ) );

关于php - PHP 的数据验证包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6325649/

相关文章:

php - 正则表达式模式帮助

php - 允许用户在没有 "Confirm Form Resubmission"弹出窗口的情况下刷新浏览器

php - 将天数转换为相对于 php 中的天数的周数

javascript - 使用维基百科 API 获取今天的精选文章?

php - 如何使用 PHP 只上传 HTML 表单的特定部分?

php - 如何在提示下载对话框的同时以 html 形式提供页面

mysql - Git环境设置。需要建议

mysql - 无法为 Pod 安装卷

javascript - 如何在 javaScript 中获取父 div id?

html - 有趣且延迟的 WebSocket