Для начала я не использую регулярные выражения очень часто, поэтому я решил, что я выброшу это здесь.Регулярное выражение PHP с использованием Apostrophe Failed
У меня есть регулярное выражение, которое я использую, чтобы найти любые специальные символы, кроме тех, которые я бы хотел разрешить.
$allowed_special_characters_list = array('-', "'", '.');
$excluded_special_characters = '';
foreach($allowed_special_characters_list as $excluded_special_character){
$excluded_special_characters .= "\\".$excluded_special_character;
}
if(preg_match("/[^\\w".$excluded_special_characters."\\s]/", $string)){
return true;
}
Когда я выход это регулярное выражение, оно дает мне следующее:
/[^\w\-\'\.\s]/
Это, кажется, работает для всего, кроме апострофа в моем окружении. Однако, когда я помещаю это точное регулярное выражение в PHP Live Regex, он, кажется, работает со всем.
Любые идеи относительно того, что не так с этим?
Редактировать: Код, приведенный выше, является упрощенной версией того, что я на самом деле использую. Я динамически создаю это регулярное выражение из массива, который находится в файле конфигурации. В любое время, когда нам нужно добавить еще один специальный символ, нам нужно будет только ввести его в массив.
Он работает для меня «var_dump (preg_match ('/ [^ \ w \ - \' \. \ S]/'," b &z")); 'return' int (1) 'и' var_dump (preg_match (' /[^\w\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ апостроф, а не точка, а не белый ar'. Кстати, вам не нужно скрывать символ '.' внутри символьного класса, и вы можете использовать' preg_quote() 'для автоматического экранирования. – piotrekkr