Предупреждение: preg_match () [function.preg-match]: не найдено конечного разделителя '/' - PullRequest
1 голос
/ 13 марта 2012

когда эта функция была вызвана, она выдала сообщение Предупреждение: 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;}

 }

Что вы думаете об этом предупреждении?

Ответы [ 2 ]

7 голосов
/ 13 марта 2012

Вы захотите избежать последнего слеша (или удалить его, не уверенный, должен ли он быть в этом регулярном выражении?).Кроме того, у вас есть обратный слеш до 0, который на самом деле не имеет смысла.

# escape it if it's supposed to be in there.
/[^A-Za-z\s0-9 - @ .]\//

или

# use a different character as a delimiter
%[^A-Za-z\s0-9 - @ .]/%

или

# remove it if it's a typo!
/[^A-Za-z\s0-9 - @ .]/

Кроме того, сделалВы знаете, что можете использовать [:alnum:] ярлык?( src )

# matches alpha numeric, "-", "@", and "."
/[[:alnum:]-@.]/

Надеюсь, окончательное редактирование:

Я бы посоветовал вам взглянуть на свою функцию в первую очередьСмущает.По сути, вы хотите проверить соответствие трем условиям: 1) проходит ли регулярное выражение, 2) является ли он минимальной длиной, и 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;
}
1 голос
/ 13 марта 2012

Ну, это странное сообщение об ошибке того, что у вас там, но у вас есть два / в конце вашего регулярного выражения.У вас должно быть только одно: "/[^A-Za-z\s\0-9 - @ .]/" Если вы хотите соответствовать литералу /, когда используете его в качестве разделителя, вам нужно экранировать его с помощью \.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...