проблема условия preg_match - PullRequest
       13

проблема условия preg_match

0 голосов
/ 08 августа 2011

Я не хочу проверять, есть ли строка ($ nick_2) "или -

Это правильно? Я не могу заставить ее работать

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

Ответы [ 2 ]

2 голосов
/ 08 августа 2011

Для поиска одиночных символов регулярные выражения являются огромным излишним.Просто используйте

if ((strpos('"', $nick_2) !== FALSE) || (strpos('ñ', $nick_2) !== FALSE)) {
   ... chars were found
}
1 голос
/ 08 августа 2011

Возможно, ваша строка находится в UTF-8, и в этом случае вы должны использовать модификатор u в preg_match и должны передать свое выражение этой функции также в UTF-8.

Если это так, вы также можете сделать некоторые из следующих вещей:

  • Заменить strtolower и strlen альтернативами mb_.
  • Нормализация вход.
  • Проверьте, не имеют ли графемы, где находятся эти символы, больше кодовых точек.
...