PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 2
28lion2008 Отправлено: 01 Июля, 2016 - 12:00:22 • Тема: Только русские буквы • Форум: Регулярные выражения

Ответов: 12
Просмотров: 11926
Мой ответ для тех кто может столкнуться с этой проблемой (как я сам недавно). Нигде нет рабочего решения. Я забыл написать, что данное решение поможет для простой проверки правильности ввода, конечно не спасёт от вредных тестеров(для них можно устроить циклическую проверку каждого символа, входит ли он в массив разрешённых). К сожалению русские буквы в фильтре не воспринимаются, как в win-1251 так и в utf8, по крайней мере в моей версии php(5.3). Выкладывая эту информацию я неоднократно проверил кучу способов написания фильтра, потратил на это много времени и не желаю никому больше с этим мучаться. Пусть знают что можно либо использовать черный список либо проверять посимвольно "вручную".
28lion2008 Отправлено: 01 Июля, 2016 - 10:50:32 • Тема: Только русские буквы • Форум: Регулярные выражения

Ответов: 12
Просмотров: 11926
К сожалению на php не получается сделать проверку русских символов. Проблема в том что он их как будто не видит. Тоесть в предложении "тут русские символы" он увидит два пробела, но если будет "русский" то он будет считать что строка не пустая, но символов для проверки нет.
Т.е. при фильтре '/[a-z]/i' условие выполнится где есть пробелы и не выполнится где их нет.
Единственный способ это пойти от обратного, если есть любые символы кроме русских то значит введено не правильно. Примерно так:
$filtr='/[a-z0-9\@\#\№\~\$\%\&\^\(\)\[\]\{\}\*\!\?\<\>\/\\\:\;\`\"\=\-\+\'\|]/i';
$str='Только русский текст';
if(preg_match($filtr,$str)){
echo 'Тут не только русские буквы';
};

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB