我不想检查字符串($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_
替代strtolower
和strlen
。 - 将输入归一化
- 检查这些字符所在的字素是否没有更多的代码点。