preg_match条件问题

时间:2011-08-08 16:25:54

标签: php preg-match

我不想检查字符串($ nick_2)是否有“或ñ

这是对的吗?我不能让它发挥作用

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

2 个答案:

答案 0 :(得分:2)

为了找到单个字符,正则表达式是大量的过度杀伤力。只需使用

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

答案 1 :(得分:1)

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

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

  • strtolowerstrlen替换为mb_替代方案。
  • Normalize输入。
  • 检查这些字符的字母是否没有更多的代码点。