警告:preg_match()[function.preg-match]:找不到结束分隔符'/'

use*_*295 1 php validation error-handling design-patterns preg-match

调用此函数时,它给出了警告:preg_match()[function.preg-match]:无结尾分隔符'/'

这是检查字母数字输入的功能

function CheckAlphanumeric($element,$minlength,$maxlength)
 { if (!preg_match ("/[^A-Za-z\s\0-9 - @ .]//", $element) && strlen($element)>=$minlength && strlen($element) <=$maxlength) { return TRUE; }
 else { return FALSE;}

 }
Run Code Online (Sandbox Code Playgroud)

您对此警告有何看法?

Owe*_*wen 7

你想要逃避最后一个正斜杠(或者删除它,不确定它是否应该在那个正则表达式中?).此外,你在0之前有一个反斜杠,这也没有任何意义.

# escape it if it's supposed to be in there.
/[^A-Za-z\s0-9 - @ .]\//
Run Code Online (Sandbox Code Playgroud)

要么

# use a different character as a delimiter
%[^A-Za-z\s0-9 - @ .]/%
Run Code Online (Sandbox Code Playgroud)

要么

# remove it if it's a typo!
/[^A-Za-z\s0-9 - @ .]/
Run Code Online (Sandbox Code Playgroud)

另外,你知道你可以使用[:alnum:]快捷方式吗?(src)

# matches alpha numeric, "-", "@", and "."
/[[:alnum:]-@.]/
Run Code Online (Sandbox Code Playgroud)

希望最终编辑:

我建议你先看看你的功能,这有点令人困惑.你基本上想要检查三个条件,1)它是否通过正则表达式,2)它是gte最小长度,3)它是否是最大长度.由于所有这三个返回布尔值(或正确评估为布尔值的东西),您可以简化功能如下:

function CheckAlphanumeric($element,$minlength,$maxlength) {
  // returns TRUE if it matches all conditions, FALSE if one fails.
  return preg_match("/[[:alnum:]-@. ]/", $element) && strlen($element) >= $minlength && strlen($element) <= $maxlength;
}
Run Code Online (Sandbox Code Playgroud)