regex — двойные кавычки в регулярном выражении PHP?

Я довольно хорошо знаком с PHP, но я новичок с регулярными выражениями в PHP. Я пытаюсь выяснить, как разрешить только a-z, A-Z, 0-9,:, ‘(одинарная кавычка), «» (двойная кавычка), +, -,., (Запятая), &, !, *, (, а также ).

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

Пример того, что я ищу:
Здравствуйте, это всего лишь пример того, что я ищу: «Hello World!».

Я пытаюсь проверить текстовую область $ _POST [‘подсказка’], используя:

$errors = array();

if(!preg_match('insert regular expression',$_POST['suggestion'])){
$errors['suggestion2'] = "Invalid";
}

Со всем, что я пробовал, я всегда получаю:

Пример того, что я ищу: Привет, это всего лишь пример того, что я ищу: \ «Hello Wolrd! \».

Я не понимаю, почему \ перед кавычками?

1

Решение

Вы можете использовать следующее регулярное выражение:

[a-zA-Z0-9:'"+.,&!*()-]

Обратите внимание, что дефис - помещается в конечную позицию, чтобы не образовывать диапазон (и он может соответствовать литералу -). +, *, ., ( а также ) не нужно экранировать внутри класса персонажа. В общем-то, ^-] следует избегать, но если они появляются в начале конечной позиции в классе персонажа, они не должны. \ необходимо экранировать в классе персонажа, но вы не разрешаете это.

Кроме того, если вы хотите сопоставить куски разрешенных символов, добавьте + квантификатор после класса персонажа: [a-zA-Z0-9:'"+.,&!*()-]+,

Увидеть демонстрация здесь и Вот.

Пример кода PHP:

$re = "/[a-zA-Z0-9:'\"+.,&!*()-]/";
$str = "a-zA-Z0-9:'\"+.,&!*()-";
preg_match_all($re, $str, $matches);

РЕДАКТИРОВАТЬ:

Поскольку вы обновили вопрос, вот информация для отключения экранирования двойных кавычек в более ранних версиях PHP. В качестве одного из вариантов, вы можете перейти к .Htaccess файл и набор php_flag magic_quotes_gpc Off,

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]