CI 验证带有特殊字符的请求

CI Validate request with special characters

我正在使用代码启动器框架。

如何验证接受字母、数字和特殊字符的请求。(space、逗号、破折号和正斜杠)

示例:

控制器

$this->form_validation->set_rules('address', 'Address', 'required|xss_clean|custom_alpha_numeric');

MY_Form_validation.php

public function custom_alpha_numeric($str)
{
    $valid = (!preg_match("/^[a-z0-9 .,-\-]+$/i", $str)) ? FALSE : TRUE;
    return $valid;
}

有没有办法在我的验证中接受正斜杠?

如果您需要在正则表达式中搜索具有特殊含义的元字符,则需要escape that character。您使用 \ 转义字符,因此:

preg_match("/^[a-z0-9 .,-\-\/]+$/i", $str)

事实上,您已经为 - 做了同样的事情,因为在 [] 中,该字符具有特殊含义(表示一个范围),而您想要显式匹配该特定字符。我认为您应该删除其中的其他 -

preg_match("/^[a-z0-9 .,\-\/]+$/i", $str)

或者,另一种选择是使用 / 以外的东西作为分隔符。 From the docs:

A delimiter can be any non-alphanumeric, non-backslash, non-whitespace character.

如果您使用不同的定界符,斜杠将变成另一个字符。因此,例如使用 #:

preg_match("#^[a-z0-9 .,\-/]+$#i", $str)