Я довольно хорошо знаком с 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! \».
Я не понимаю, почему \ перед кавычками?
Вы можете использовать следующее регулярное выражение:
[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
,
Других решений пока нет …