когда эта функция была вызвана, она дала сообщение Warning: 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;} }
Каковы ваши данные по этому предупреждению?
Вы хотите избежать последней косой черты (или удалить ее, не уверен, должно ли оно быть в этом регулярном выражении?). Кроме того, у вас есть обратная косая черта до 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; }
Ну, это странное сообщение об ошибке для того, что у вас есть, но у вас есть два /
в конце вашего регулярного выражения. У вас должен быть только один: "/[^A-Za-z\s\0-9 - @ .]/"
Если вы хотите совместить литерал /
когда вы используете его в качестве разделителя, вам нужно избежать его с помощью \
.