PHP pregmatch textarea - PullRequest
       4

PHP pregmatch textarea

1 голос
/ 09 ноября 2019

Хорошо, у меня есть эта форма, содержащая текстовые области, и я хочу убедиться, что они не содержат запрещенных символов. Html:

<textarea minlength="100" required name="Description" maxlength="800">
</textarea>

Php:

if(!preg_match("/^[-\p{L}\p{N} #&()!*,.;'\/\\\\]+$/u",$_POST["Description"])){
 //error
}

Я пробовал несколько полностью легальных текстов, но он возвращает false. Что мне не хватает?

1 Ответ

0 голосов
/ 09 ноября 2019

Полагаю, ваше выражение работает нормально, вы можете убрать флаг u:

if(!preg_match("/^[-\p{L}\p{N} #&()!*,.;'\/\\\\]+$/s",$_POST["Description"])){
 //error
}

Или, возможно, вы пытаетесь сделать,

if(!preg_match("/^[^-\p{L}\p{N} #&()!*,.;'\/\\\\]+$/s",$_POST["Description"])){
 //error
}

, если выхочу исключить вещи.

Демо 2

Тест

$re = '/^[-\p{L}\p{N} #&()!*,.;\'\/\\\\]+$/m';
$str = 'abcd
abcd\\\\\\\\\\\\
&*&??
abc?
';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

var_dump($matches);

Вывод

array(2) {
  [0]=>
  array(1) {
    [0]=>
    string(4) "abcd"
  }
  [1]=>
  array(1) {
    [0]=>
    string(10) "abcd\\\\\\"
  }
}

ЕслиВы хотите упростить / изменить / изучить выражение, это было объяснено на верхней правой панели regex101.com . Если хотите, вы также можете посмотреть в этой ссылке , как она будет сопоставляться с некоторыми примерами ввода.


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