PHP表单验证空白问题

时间:2013-10-22 13:08:35

标签: php validation

我正在尝试验证表单。我的代码如下:

if(isset($_POST['data'])) {
        $id = $this->input->post('id');
        $action = $this->input->post('action');
        $table = $this->input->post('table');
        $data = $this->input->post('data');

        $out = array();
        $out['id'] = $id;
        $out['error'] = '';
        $out['fieldErrors'] = '';
        $out['data'] = array();
        $out['row'] = $data;


if($action=="create" && $data['display_name'] === '') {
        if (empty($data['display_name']))
        {
           $this->_out['error'] = "Display name is required";
           echo json_encode( $this->_out );
           exit;
        }
    } 
}

如果表单中没有插入数据,现在这样可以正常工作,但是如果有空格(空格)则不起作用。

有什么建议吗?

4 个答案:

答案 0 :(得分:1)

有几种方法可以解决这个问题:

替换所有空格:

if (strlen(preg_replace('/\s/', '', $data['display_name'])) == 0)
{

使用trim删除前导和尾随空格:

if (strlen(trim($data['display_name'])) == 0)
{

使用str_replace()删除无效字符:

if (strlen(str_replace(array(' ', "\t"), array('', ''), $data['display_name'])) == 0)
{

使用正则表达式验证名称:

if (!preg_match('/^([A-Za-z0-9-_]+)$/', $data['display_name']))
{

答案 1 :(得分:0)

只需使用trim函数并检查其是否为空字符串:

if ($action=="create") {
    if (trim($data['display_name']) == '') {
        $this->_out['error'] = "Display name is required";
        echo json_encode( $this->_out );
        exit;
    }
}

答案 2 :(得分:0)

试试这个。我使用下面的ctype_space函数来检查空格

if($action=="create" && ($data['display_name'] === '' || ctype_space($data['display_name']))) {
 $this->_out['error'] = "Display name is required";
 echo json_encode( $this->_out );
 exit;
} 

答案 3 :(得分:0)

===检查类型以及值比较,在包含值的变量上使用trim函数可以得到预期的结果。