Preg_match条件问题


preg_match condition problem

我不想检查字符串($nick_2)是否得到"或ñ

正确吗?我不能让它工作

if ( (strlen($nick_2) >= 3) && (strlen($nick_2) <= 25) && (!preg_match("/'"/", $nick_2)) && (!preg_match("/ñ/", strtolower($nick_2))) ) {

对于查找单个字符,正则表达式是非常多余的。只使用

if ((strpos('"', $nick_2) !== FALSE) || (strpos('ñ', $nick_2) !== FALSE)) {
   ... chars were found
}

可能您的字符串是UTF-8,在这种情况下,您必须在preg_match中使用u修饰符,并且应该以UTF-8向该函数提交您的表达式。

如果是这种情况,您还需要做以下一些事情:

  • mb_替代strtolowerstrlen
  • 将输入归一化
  • 检查这些字符所在的字素是否没有更多的代码点。