Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум веб-мастеров _ Общие вопросы _ escape-последовательность, чтобы послать через GET запрос

Автор: Владислав Алексеевич 27.6.2008, 12:17

Как создать escape-последовательность из строки, что бы она была готова для посылки через GET запрос?
Рассмотрел функции сериализации (serialize) и установки слешей в строке (addslashes). Оказалось не подходящим вариантом.

Пример: запрос
index.php?par1=1&par2=2&data=(?val1=1&val2=2)
должен интерпретироваться как
$_GET['par1'] == '1' ;
$_GET['par2'] == '2' ;
$_GET['data'] == '(?val1=1&val2=2)' ;

Так не получается. Надо сделать "паковку". (Когда некоторые символы заменяются на числа типа %20)

Правильным GET запросом будет такой
index.php?par1=1&par2=2&data=%28%3Fval1%3D1%26val2%3D2%29

Посоветуйте, что можно применить для "покования" строки?

Автор: Владислав Алексеевич 27.6.2008, 14:03

Ответ на мой вопрос:

Цитата
Преобразование в escape-последовательность
Для корректной обработки запроса строка ключевых слов ОБЯЗАТЕЛЬНО должна быть преобразована в escape-последовательность.
Escape-последовательность это закодированный текст, например, для ключевого слова «слон» переменная будет выглядеть так text=%F1%EB%EE%ED
Внимание! Если вы не закодируете текст, реклама отображаться не будет!
Оператор кодирования в escape-последовательность есть во многих языках программирования - perl, php:

PHP
$phrase = “слон”;
$phrase = urlencode($phrase);

Perl
use URI::Escape;
my $phrase = “слон”;
$phrase = uri_escape($phrase);
(Источник: http://forum.wm-help.net/go/?http://help.yandex.ru/partner/?id=990197 )

Обратная операция для PHP:
Код
// синтаксис
(string) urldecode(string s);

Invision Power Board ()
© Invision Power Services ()