Какое регулярное выражение для проверки поля? - PullRequest
0 голосов
/ 04 сентября 2010

Я использую регулярное выражение для поля, введенного пользователем, чтобы убедиться, что они ввели от 1 до 20 символов.

Вот код:

$post_validations = array("title" => '/^[[:alnum:][:punct:][:space:]]{1,100}$/');

Но всякий раз, когда пользователь вводит иностранный символ или специальный символ кавычки из MS Word (я не могу вставить его сюда, он преобразуетсянормальная кавычка!) регулярное выражение не возвращает истину и показывает ошибку.

Я подумал, что будет лучшим регулярным выражением для использования?

Спасибо

1 Ответ

6 голосов
/ 04 сентября 2010

Если все, что вам нужно, это знать, что это от 1 до 20 символов, почему бы не использовать strlen()?

 $length = strlen($title);
 if($length >= 1 and $length <=20)
      echo "VALID";
 else
      echo "Invalid";

[РЕДАКТИРОВАТЬ]: проверка буквенно-цифровой или пунктуации:

И если вы также хотите проверить, содержит ли строка какие-либо непечатаемые символы, которые могут вызвать проблемы, просто используйте ctype_graph()

 if(ctype_graph ($title))
      echo "Only alphanumeric or punctuation";
 else
      echo "Invalid non-printable characters found";

[РЕДАКТИРОВАТЬ 2]:

Если вы также хотите, чтобы пробелы были проверены, просто используйте это:

if(ctype_graph(str_replace(' ', '',$title))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...