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]   

> Без описания
Okula
Отправлено: 28 Октября, 2010 - 23:26:42
Post Id



Участник


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


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




При фильтровании текста собержащего пробелы регулярка утрачивает свою работоспособность, если использовать на сервере. В приложении RegexBuddy регулярка работает. Может можно как-то подругому составить?

CODE (htmlphp):
скопировать код в буфер обмена
  1. preg_match('/^([А-яA-z0-9.,?!:-\s])+$/i', $text);

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

 
 Top
Uchkuma
Отправлено: 29 Октября, 2010 - 00:16:22
Post Id



Участник


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


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




Почему не работает точно не могу сказать, но рекомендую экранировать знак минус и поставить знак плюс непосредственно за символьным классом, а не за подмаской. Хотя последнее зависит от того, что вам нужно в конечном счете.
 
 Top
Okula
Отправлено: 29 Октября, 2010 - 00:43:15
Post Id



Участник


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


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




Uchkuma пишет:
Почему не работает точно не могу сказать, но рекомендую экранировать знак минус и поставить знак плюс непосредственно за символьным классом, а не за подмаской. Хотя последнее зависит от того, что вам нужно в конечном счете.


Пробовал экранировать "-" и "+" переставлял. Толку нет. Мне нужно выводить ошибку сли в тексте есть символы отличные от этих (буквы и цыфры пропускать как разрешённые символы):
. , ? ! - :

(Отредактировано автором: 29 Октября, 2010 - 00:44:12)

 
 Top
Uchkuma
Отправлено: 29 Октября, 2010 - 00:52:51
Post Id



Участник


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


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




Идем в сторону упрощения регулярки
Если preg_match вернет больше нуля, значит найден запрещенный символ.
(Добавление)
Ну и если нужен именно пробел, а не таб и перенос строки, то лучше таки пробел и поставить, а не \s.
 
 Top
Okula
Отправлено: 29 Октября, 2010 - 01:06:24
Post Id



Участник


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


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




Uchkuma пишет:
Ну и если нужен именно пробел, а не таб и перенос строки, то лучше таки пробел и поставить, а не \s.


Спасибо. Улыбка
Ну как бы писать просто пробел не хорошо, т.к. \s это и есть любой пробельный символ и он не обработает перевод строки. Это \n делает. Если только модификатор не указать
 
 Top
Uchkuma
Отправлено: 29 Октября, 2010 - 01:13:23
Post Id



Участник


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


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




Okula пишет:
и он не обработает перевод строки. Это \n делает. Если только модификатор не указать
Перевод строки, это тоже пробельный символ и он входит в спецсимвол \s. А модификатор s, о котором, судя по всему, вы упомянули, включает перевод строки в символ "точка", т.е. в любой символ.
 
 Top
Okula
Отправлено: 29 Октября, 2010 - 01:15:10
Post Id



Участник


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


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




Ясно.
 
 Top
JustUserR
Отправлено: 29 Октября, 2010 - 12:38:59
Post Id



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


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


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




Okula Фактически вы можете осуществить явную вставку в шаблон регулярного выражения некоторого конкретного спецсимвола такого как перевод строки или возврат каретки - тем не менее необходимо обеспечения соответствующего уровня экранирования в виде \\n для предотвращения его подстановки в реальный символ во время обработки строковой константы


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Okula
Отправлено: 30 Октября, 2010 - 12:55:23
Post Id



Участник


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


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




Не хочет работать регулярка

выводит 0 только если текст в поле не введён, а в остальных случаях всегда 1
даже если просто тектст написан, без символов.
Чтож за фигня такая?
-----------------
Заметил что русские буквы обрабатывает как ошибку.

(Отредактировано автором: 30 Октября, 2010 - 13:00:00)

 
 Top
JustUserR
Отправлено: 31 Октября, 2010 - 01:34:14
Post Id



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


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


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




Okula пишет:
В остальных случаях всегда 1 даже если просто тектст написан, без символов
Возможной причиной неправильного обеспечени обработки шаблона регулярного выражения - может являться наличие в нем класса символов включающего в себя элементы национальных кодовых таблиц - в частности в том случае если осуществление трактования исходных строковых констант и поступающей информации производится относительно различной кодировки представления - то выполнение сопоставления некоторой входной строки относительно раскрываемого диапазона значений может не соответствовать оригинальной схеме


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 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