Задача пропускать все символы латиницы и кириллицы, а так же цифры, всякие точки-тире и подобные небуквенноцифровые символы присутствующие на стандартной клавиатуре, пробелы и т.д. И самое главное не пропускать такие символы как: ž, ė, Á и т.д. Код (Text): if (!preg_match("/[a-zA-Zа-яА-Я0-9]/i", $text)) echo "В форме использованы недопустимые символы!"; Как модернизировать код? Или может есть другое решение? Заранее благодарю за помощь.
между 9 и ] вставляешь все символы (точки, тире, подчеркивания) что интересуют, в помощь такой ресурс. http://php-include.ru/regulyarnye-vyrazheniya-onlain Имей ввиду, что некоторые символы надо экранировать, например туже точку, вот так вот: \.
ну вот: Код (Text): if ($_GET[$key]&&!preg_match("/[a-zA-Zа-яА-Я0-9\#\*\@\_\.\,\:\?\!\-\/\+\(\)\$\s]/i", $value)) {$mest=$mest+1; $text.="В форме использованы недопустимые символы!<br>";} Но дело в том что данная регулярка не пропускает такие символы как { И благополучно пропускает такие символы как ž Почему?
Зачем а-я и А-Я если стоит i? Вбей в поиск regexp Ascii и там тонна примеров как разрешить символы из ascii по диапазону
из тонны нарыл граммов 300, не больше... Для экспериментов написал: Код (Text): if (preg_match("/[0-9]/", $_GET['answer'])) echo "Ok! Symbol - ".$_GET['answer']; else echo "Error!"; echo " <form name='form' method='get' action='test.php' > <p><input type='text' name='answer'></p> <p><input type='submit'></p> </form> "; Не знаю почему, но шаблон [0-9] пропускает не только цифры, но и такие символы как ó. При вводе символа ó и нажатии на кнопку Отправить, в поисковой строке переменная answer=%26%23243%3B. Видимо из-за того что переменная содержит цифры, этот шаблон и пропускает ó. Так же пробовал вместо [0-9] ставить \x30-\x39, не помогает, все равно шаблон пропускает символ ó. Проблема осталась прежней: Как отфильтровать некирилические символы типа ó и пропускать русский и английские символы, цифры и некоторые точки, запятый, тире и подобные символы?
а если вот так надо: Код (Text): preg_match("/[\xC0-\xFF\xA8\xB8\x41-\x5A\x61-\x7A0-9]/", $_GET['answer']) как тогда?
Выше задача стояла так: Чило это лишь частный случай задачи. В итоге надо что бы пропускало Щ!ф,N+W.1-2 и не пропускало Щ!ф,óN+W.1-2
kit, слабо было почитать как работают регулярные выражения? https://php.net/manual/ru/reference.pcre.pattern.syntax.php Есть символы для начала ^ и конца $ строки. ^[0-9]$
и чё? как эти символы помогут? Добавлено спустя 3 минуты 19 секунд: Мне надо отфильтровать $_GET['answer'] если эта переменная содержит некирилические символы типа ó, находящиеся в ЛЮБОМ месте. И пропускать $_GET['answer'], если эта переменная содержит русский и английские символы, цифры и некоторые точки, запятые, тире и подобные символы, находящиеся в ЛЮБОМ месте текста переменной.
Ну смотри, что я тебе рассказал: 1. диапазон ascii 2. начало и конец строки ^[0-9]$ Теперь используй всё это вместе. Вот простой пример Код (PHP): if (mb_ereg_match("^[0-9a-zа-я]+$", "pâine", "i")) { echo "Вхождение найдено."; } else { echo "Вхождение не найдено."; }
denis01 спасибо за помощь и терпение! Код (Text): mb_ereg_match("^[\x20\x21\x23-\x26\x28-\x5F\x61-\x7E\xA8\xB8\xB9\xC0-\xFF]+$", $_GET['answer'], "i") работает!