Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JavaScript, функция escape, её аналог на php 
:(
    Опции темы
diam
Дата 26.10.2006, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 348
Регистрация: 23.1.2005
Где: Екатеринбург

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



Проблема.
В JavaScript есть такая функция: escape.
Мне нужен аналог на php, который бы кодировал строку так же, как это делает escape в JavaScript.

Может, есть готовые решения? Не хочется писать самому
PM MAIL   Вверх
Nicholas_S
Дата 26.10.2006, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 19



попробуй-ка urlencode - urldecode  smile 


--------------------
...все в мире относительно
PM   Вверх
diam
Дата 26.10.2006, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 348
Регистрация: 23.1.2005
Где: Екатеринбург

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



Цитата(Nicholas_S @  26.10.2006,  14:22 Найти цитируемый пост)
попробуй-ка urlencode - urldecode  smile  

Не поможет smile

Ладно, пришлось потратить время, так как ничего внятного не нашёл. Пользуйтесь smile
Код

mb_internal_encoding('CP1251');
function escape($str)
{
    // выполняем преобразование исходной строки в UTF-16BE
    $str = mb_convert_encoding($str, 'UTF-16BE', mb_internal_encoding());
    // ВНИМАНИЕ: внутренняя кодировка должна быть определена, если Вы не
    //           желаете делать этого по каким-либо причинам, расскоментируйте
    //           эту строку и закомментируйте строку выше, и не забудьте
    //           поправить кодировку CP1251 на ту, что вы используете
    //$str = mb_convert_encoding($c, 'UTF-16BE', 'CP1251');

    // коды символов, которые подлежат преобразованию вида %nn
    $e = array(44, 58, 59, 60, 61, 62, 63, 91, 92, 93, 94, 96);

    // заполняем новую строку
    $snew = "";
    for ($i = 0; $i < mb_strlen($str, 'UTF-16BE'); $i++) {
        // разбираем символ с индексом $i
        $c = mb_substr($str, $i, 1, 'UTF-16BE');

        // получим код символа с индексом $i
        $n = strlen($c) == 2 ? (ord($c) * 256 + ord($c[1])) : ord($c);

        // дальше дело техники
        if ($n > 255)
            $snew .= sprintf('%%u%04X', $n);
        elseif ($n < 42 || $n > 122 || in_array($n, $e))
            $snew .= sprintf('%%%02X', $n);
        else
            $snew .= chr($n);
    }
    return $snew;
}

PM MAIL   Вверх
Nicholas_S
Дата 26.10.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 19



Ладно, каюсь.  smile 
Только проверь список символов:

Character   URL Encoded        

Space       %20         

"           %22

#           %23

%           %25

&           %26

(           %28

)           %29

+           %2B

,           %2C

/           %2F

:           %3A

;           %3B

<           %3C

=           %3D

>           %3E

?           %3F

@           %40

\           %5C

|           %7C 


--------------------
...все в мире относительно
PM   Вверх
diam
Дата 26.10.2006, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 348
Регистрация: 23.1.2005
Где: Екатеринбург

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



Цитата(Nicholas_S @  26.10.2006,  17:29 Найти цитируемый пост)
Только проверь список символов:

Не стесняйся, проверь smile Работает.
PM MAIL   Вверх
Nicholas_S
Дата 26.10.2006, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 19



diam, не стесняюсь. smile Но, опять же, расширение надо подключать.


--------------------
...все в мире относительно
PM   Вверх
diam
Дата 26.10.2006, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 348
Регистрация: 23.1.2005
Где: Екатеринбург

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



Цитата(Nicholas_S @  26.10.2006,  18:02 Найти цитируемый пост)
Но, опять же, расширение надо подключать.

Какое расширение?
PM MAIL   Вверх
smartov
Дата 27.10.2006, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Цитата(diam @  26.10.2006,  19:52 Найти цитируемый пост)
Какое расширение? 

mbstring
PM MAIL   Вверх
diam
Дата 27.10.2006, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 348
Регистрация: 23.1.2005
Где: Екатеринбург

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



Цитата(smartov @  27.10.2006,  14:09 Найти цитируемый пост)
mbstring 

Я не знал, что его нужно подключать.
Ладно, не важно, главное - работает. Но если есть другие варианты, я с удовольствием рассмотрю (to satisfy my curiosity smile)

Добавлено @ 11:23 
Только что навеяло про mb_*. А разве есть в php другой способ работы с многобайтными кодировками?
PM MAIL   Вверх
smartov
Дата 27.10.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



diam, 
Цитата(diam @  27.10.2006,  10:18 Найти цитируемый пост)
А разве есть в php другой способ работы с многобайтными кодировками? 

iconv но его тоже надо ставить и он глючный smile
Можно конечно еще все руками написать  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

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


 




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


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

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