PHP 表单验证空格问题



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

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;
        }
    } 
}

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

有什么建议吗?

有几个选项可以解决这个问题:

将所有空格替换为任何内容:

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

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

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']))
{

===检查类型以及值比较,对包含值的变量使用trim函数会给你预期的结果。

试试这个。我使用了下面的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;
} 

只需使用修剪函数并检查其空字符串:

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

最新更新