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 :: Фильтрование спецсимволов (ошибка с пробелом)
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
При фильтровании текста собержащего пробелы регулярка утрачивает свою работоспособность, если использовать на сервере. В приложении RegexBuddy регулярка работает. Может можно как-то подругому составить?
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
Помог: 6 раз(а)
Почему не работает точно не могу сказать, но рекомендую экранировать знак минус и поставить знак плюс непосредственно за символьным классом, а не за подмаской. Хотя последнее зависит от того, что вам нужно в конечном счете.
Okula
Отправлено: 29 Октября, 2010 - 00:43:15
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
Uchkuma пишет:
Почему не работает точно не могу сказать, но рекомендую экранировать знак минус и поставить знак плюс непосредственно за символьным классом, а не за подмаской. Хотя последнее зависит от того, что вам нужно в конечном счете.
Пробовал экранировать "-" и "+" переставлял. Толку нет. Мне нужно выводить ошибку сли в тексте есть символы отличные от этих (буквы и цыфры пропускать как разрешённые символы):
. , ? ! - :
Если preg_match вернет больше нуля, значит найден запрещенный символ. (Добавление)
Ну и если нужен именно пробел, а не таб и перенос строки, то лучше таки пробел и поставить, а не \s.
Okula
Отправлено: 29 Октября, 2010 - 01:06:24
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
Uchkuma пишет:
Ну и если нужен именно пробел, а не таб и перенос строки, то лучше таки пробел и поставить, а не \s.
Спасибо.
Ну как бы писать просто пробел не хорошо, т.к. \s это и есть любой пробельный символ и он не обработает перевод строки. Это \n делает. Если только модификатор не указать
Uchkuma
Отправлено: 29 Октября, 2010 - 01:13:23
Участник
Покинул форум
Сообщений всего: 1539
Дата рег-ции: Март 2010 Откуда: Киров
Помог: 6 раз(а)
Okula пишет:
и он не обработает перевод строки. Это \n делает. Если только модификатор не указать
Перевод строки, это тоже пробельный символ и он входит в спецсимвол \s. А модификатор s, о котором, судя по всему, вы упомянули, включает перевод строки в символ "точка", т.е. в любой символ.
Okula
Отправлено: 29 Октября, 2010 - 01:15:10
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
Ясно.
JustUserR
Отправлено: 29 Октября, 2010 - 12:38:59
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Okula Фактически вы можете осуществить явную вставку в шаблон регулярного выражения некоторого конкретного спецсимвола такого как перевод строки или возврат каретки - тем не менее необходимо обеспечения соответствующего уровня экранирования в виде \\n для предотвращения его подстановки в реальный символ во время обработки строковой константы
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Okula
Отправлено: 30 Октября, 2010 - 12:55:23
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
выводит 0 только если текст в поле не введён, а в остальных случаях всегда 1
даже если просто тектст написан, без символов.
Чтож за фигня такая?
-----------------
Заметил что русские буквы обрабатывает как ошибку.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Okula пишет:
В остальных случаях всегда 1 даже если просто тектст написан, без символов
Возможной причиной неправильного обеспечени обработки шаблона регулярного выражения - может являться наличие в нем класса символов включающего в себя элементы национальных кодовых таблиц - в частности в том случае если осуществление трактования исходных строковых констант и поступающей информации производится относительно различной кодировки представления - то выполнение сопоставления некоторой входной строки относительно раскрываемого диапазона значений может не соответствовать оригинальной схеме
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.