соответствие прег не допускает апострофы / одинарные кавычки (') - PullRequest
0 голосов
/ 18 февраля 2019

Я не могу заставить pregmatch принимать одинарные (') или двойные (") кавычки. Я пытаюсь сделать это в php, шаблон находится в" textarea ".

Я хотел бы разрешить оба типа кавычекно ни один из них не принимается. Поэтому остановка ввода в базу данных.

У меня есть шаблон

pattern="[a-zA-Z0-9.,()'!?:"\s]"

У меня есть прег совпадение

!preg_match("/^[a-zA-Z0-9.,()'!?:"\s]*$/", $description)

Я искал и пробовал все.

Когда я пытаюсь это

"/^['\a-zA-Z0-9.,()!?:\s]*$/"

, он возвращает Лизу вместо Лизы

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Так как ваш preg-матч теперь позволяет использовать одинарные кавычки, давайте оставим его и удалим косую черту перед вставкой в ​​базу данных.

Попробуйте это:

!preg_match("/^['\a-zA-Z0-9.,()!?:\s]*$/", $description))

И затем, прежде чем связывать ваши параметрыв подготовленном заявлении добавьте следующую строку кода:

  $description = stripslashes(htmlentities($description));

@ Джон Конде был прав.Убедитесь, что вы всегда используете подготовленные операторы и привязываете свои параметры.

Надеюсь, это полезно

0 голосов
/ 19 февраля 2019

Фильтруйте входные данные , затем выполните проверку, чтобы убедиться, что вы не храните вредоносный бит HTML или Javascript или средство разбиения тегов .Затем, как только вы доберетесь до , связывая ваши параметры с PDO для вставки, укажите его как PARAM_STR .

$description = filter_input(INPUT_POST,'description',FILTER_SANITIZE_STRING);

    if(preg_match("~^[a-zA-Z0-9.,()\"'!?:\s]*$~", $description)){
       //Call functions to prepare statements and insert into db here.
       //...
       $stmt->bindValue(':description', $description, PDO::PARAM_STR);
    }
...