Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> URLencoded, строку закадировать в URLencoded 
:(
    Опции темы
Гость_Гость
Дата 27.6.2004, 08:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











встала вот такая проблема: есть строка которую нужно закадировать в обыкновенный URLencoded... :\
  Вверх
Незнайка
Дата 30.6.2004, 00:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Точно не понял (я просто не уверен, что понял, что такое URLencoded)...
Попробуй
@str = split //, $str;
$str = '';
for (@str) {
$str .= join("%", unpack('C', $_));
}

  Вверх
Гость_Гость
Дата 9.7.2004, 12:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











да, ты понял правильно, только она кждый символ переделывает в Dec, а надо в Hex - в этом то и состоит основная сложность, для меня :\
URLencoded можно увидеть в строке браузера при передаче символов отличных от английских методом Get, т.е. некоторые символы заменяются на их hex код с предшествующим знаком "%".
  Вверх
Незнайка
Дата 9.7.2004, 23:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Сори, забыл про шестнадцатиричную систему. Вот тебе код:
Код
@str = split //, $str;
$str = '';
for (@str) {
$str .= join("%", to_hex(unpack('C', $_)));
}

sub to_hex1 {
my ($a, $b) = split(//, $_[0]);
if (defined $b) {
 $b =~ tr/0-5/A-F/;
 return $b;
}
return $a;
}

sub to_hex {
my $null = 0;
my ($i) = @_;
my $f = int($i / 16);
my $s = $i % 16;
if ($f == 0) { $null = 1; }
if ($f > 9 && $f < 16) { $f = to_hex1($f); }
elsif ($f > 15) { $f = to_hex($f); }
if ($s > 9) { $s = to_hex1($s); }
($null) ?
(return $s) :
(return join('', $f, $s));
}

Вроде бы так. Но проверь на баги, може есть.

  Вверх
Гость_Гость
Дата 11.7.2004, 11:47 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











оно :) благадарствую...
  Вверх
ElectricalStorm
Дата 12.7.2004, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: нет
Всего: 9



Код

s/([^\w()'*~!.-])/sprintf '%%%02x', ord $1/eg;  # encode

s/%([A-Fa-f\d]{2})/chr hex $1/eg;               # decode  


Это сообщение отредактировал(а) ElectricalStorm - 12.7.2004, 14:52


--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
Гость_Гость
Дата 13.7.2004, 22:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ElectricalStorm
О! благадарю.
Хотя мне не совсем понятна # encode...
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0938 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.