我正在尝试验证表单。我的代码如下:
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;
}
}