Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Только русские буквы

 PHP.SU

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


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

> Без описания
LORDIF
Отправлено: 27 Октября, 2010 - 18:34:53
Post Id



Частый гость


Покинул форум
Сообщений всего: 201
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Как сделать проверку, чтобы в строке не было ни одного знака или иностранной буквы, только русский алфавит?
 
 Top
Мелкий Супермодератор
Отправлено: 27 Октября, 2010 - 18:54:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)






-----
PostgreSQL DBA
 
 Top
LORDIF
Отправлено: 27 Октября, 2010 - 19:05:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 201
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Вот мой код:
PHP:
скопировать код в буфер обмена
  1. if(preg_match('/[а-я]+/msi',$_POST['userfname']))
  2.         {
  3.             $err[]='Ваше имя сожержит недопустимые символы!';
  4.         }

У меня не получается, выводит ошибку.
Может я что-то делаю неправильно?
 
 Top
Мелкий Супермодератор
Отправлено: 27 Октября, 2010 - 19:12:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Да, неудачная регулярка, отрицание пропустил. Так ищет всё, кроме.
PHP:
скопировать код в буфер обмена
  1. preg_match('/[^а-я]+/msi',$ваша_строка);


-----
PostgreSQL DBA
 
 Top
OrmaJever
Отправлено: 27 Октября, 2010 - 19:40:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




LORDIF пишет:
У меня не получается, выводит ошибку.

А если бы мы видели текстэтой ошибки...


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
LORDIF
Отправлено: 27 Октября, 2010 - 20:20:01
Post Id



Частый гость


Покинул форум
Сообщений всего: 201
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Мелкий, все заработало, но мне нуно еще с заглавными буквами, помогите реализовать.

(Отредактировано автором: 27 Октября, 2010 - 20:20:23)

 
 Top
Мелкий Супермодератор
Отправлено: 27 Октября, 2010 - 20:29:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А проверить сначала? они в комплекте, модификатор i, регистронезависимость.


-----
PostgreSQL DBA
 
 Top
LORDIF
Отправлено: 27 Октября, 2010 - 20:33:14
Post Id



Частый гость


Покинул форум
Сообщений всего: 201
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




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

(Отредактировано автором: 27 Октября, 2010 - 20:35:47)

 
 Top
Мелкий Супермодератор
Отправлено: 27 Октября, 2010 - 20:47:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Повторю ещё раз: приведённая мной регулярка не зависит от регистра символов, т.к. указан модификатор i.


-----
PostgreSQL DBA
 
 Top
28lion2008
Отправлено: 01 Июля, 2016 - 10:50:32
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Июль 2016  


Помог: 0 раз(а)




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

(Отредактировано автором: 01 Июля, 2016 - 10:53:47)

 
 Top
Мелкий Супермодератор
Отправлено: 01 Июля, 2016 - 11:30:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Нет, с чёрным списком там где нужен белый вы далеко не уйдёте.

Работа над ошибками 6-летней давности, утверждение, что строка состоит только из кириллицы:

Если нужны пробельные символы:

Только пробелы и кириллица:


-----
PostgreSQL DBA
 
 Top
28lion2008
Отправлено: 01 Июля, 2016 - 12:00:22
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Июль 2016  


Помог: 0 раз(а)




Мой ответ для тех кто может столкнуться с этой проблемой (как я сам недавно). Нигде нет рабочего решения. Я забыл написать, что данное решение поможет для простой проверки правильности ввода, конечно не спасёт от вредных тестеров(для них можно устроить циклическую проверку каждого символа, входит ли он в массив разрешённых). К сожалению русские буквы в фильтре не воспринимаются, как в win-1251 так и в utf8, по крайней мере в моей версии php(5.3). Выкладывая эту информацию я неоднократно проверил кучу способов написания фильтра, потратил на это много времени и не желаю никому больше с этим мучаться. Пусть знают что можно либо использовать черный список либо проверять посимвольно "вручную".

(Отредактировано автором: 01 Июля, 2016 - 12:43:51)

 
 Top
IllusionMH
Отправлено: 01 Июля, 2016 - 12:27:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




28lion2008, в каком сочетании строки и регулярки пробел проходит если только [a-z] в списке? ограничения на начало и конец не забыли поставить как это Мелкий делал?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB