![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
Привет!!!
Столкнулся с такой проблемой, программа получает данные из формы, затем данные очищаются, под такой шаблон qr/^[A-Za-z0-9\s-]+$/. Всё вроде нормально, но мне если пользователь вводит символ, например из французского алфавита é или ê или символ нидерландского языка ë, то очистка работает не верно. Вобщем если вводить такой символ напрямую в шаблон, то файл не сохраняется как текстовый и сообщает о том, что нужно сохранить его в формате Unicode. Если кто-нить знает как решить такую проблему, буду очень благодаре. Спасибо. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
не уверен, но все же, англ алфавит имеет коды
65(A)-90(Z) 97(a)-122(z) 48(0)-57(9) 45(-) 32(\s) может тебе такое подойдет? $str =~ s/[\x21-\x2C\x2E-\x2F\x3A-\x40\x5B-\x60\x7B-\xFF]//g; или как-нибудь так $str =~ s/[^a-zA-Z0-9\s-]//g; Это сообщение отредактировал(а) chaos - 3.8.2005, 07:48 |
|||
|
||||
| wladk |
|
||||
|
Unregistered |
Почему не верно?
А что если сначала прогнать всю строку через escapeHTML а уже потом производить очистку? Добавив необходимые символы в шаблон. |
||||
|
|||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
Вобщем, что бы не эксперементировать на разных примерах, написал такой тестовый код:
Вот мне собственно нужно передать подпрограмме очистки переменной шаблон, который будет чистить слова латинского алфавита + диактрические символы. Вот например Бельгия на нидерландском языке пишется так België, вот мне её и нужно пропустить, а так же символы французского и немецкого языков, но о них позже, для начала хотя бы символ ë пропустить. Вот например если я в выше приведённой форме введу слово België, то после перезагрузки старницы у меня в текстовом поле вообще последний символ заменяется на л, т.е. в текстовом поле теперь уже не België, а Belgiл. PS: Спасибо за советы, сейчас буду пробовать ещё. Это сообщение отредактировал(а) korob2001 - 4.8.2005, 03:00 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
||||
|
||||
| Bolt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 21.2.2005 Репутация: нет Всего: нет |
korob2001
use bytes? or use Encode qw(encode_utf8) if perl -v > 5.6 |
|||
|
||||
| sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 2 Всего: 28 |
korob2001 просто необходимо расширить шаблон qr/^[A-Za-zёéê0-9\s-]+$/.
-------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
ёéê не сохранить в текстовом файле!!! |
|||
|
||||
| sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 2 Всего: 28 |
chaos
с этим я согласен, поспешил. С буквой ё - не согласен. -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
Дело в том, что в Нидерландской винде все эти символы успешно сохраняются, в текстовые файлы, зато теряется возможность сохранять кирилицу, точнее она есть, но только как Unicode. Наверное прийдётся отказаться от русской винды или вообще от винды.
Это сообщение отредактировал(а) korob2001 - 16.8.2005, 22:15 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 2 Всего: 28 |
korob2001 вот вариант:
-------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
| korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
sharq - да, но здесь проблема в том, что в данном варианте мы в программном коде устанавливаем этот символ. Пользователь же вводит это значение в форму, вот попробуй вставить его в код, который я привёл выше, а затем введи в форму этот символ.
-------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
| sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 2 Всего: 28 |
korob2001
какая разница, если это значение (код) этого символа в Юникоде? Если пользователь введет букву ё (ту, что в кириллице есть), то это буква будет иметь другой код в юникоде - \x0451. Я, конечно, попробую, только вот раскладку поменяю... -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
![]()
|
| Правила форума "Perl: CGI программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |