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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> URL с %xx => URL с русскими буквами, Как преобразовать URL? 
:(
    Опции темы
OlegNT
Дата 29.11.2007, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 21.3.2006
Где: Нижний Тагил

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



Есть набор URL-адресов с поисковыми запросами.

например: 
Код

http://www.yandex.ru/yandsearch?text=%D0%C0%D1%CF%C8%D1%C0%CD%C8%C5+%DD%CB%C5%CA%D2%D0%CE%CF%CE%C5%C7%C4%CE%C2+%D1%C2%C5%D0%C4%CB%CE%C2%D1%CA+%CD-%D2%C0%C3%C8%CB&rpt=rad

и
Код

http://www.yandex.ru/yandsearch?text=%D0%A1%D0%B0%D0%BD-%D0%94%D0%BE%D0%BD%D0%B0%D1%82%D0%BE


Нужно преобразовать их к читаемому виду, т.е. в данном случае это будут соответственно

Код

http://www.yandex.ru/yandsearch?text=РАСПИСАНИЕ+ЭЛЕКТРОПОЕЗДОВ+СВЕРДЛОВСК+Н-ТАГИЛ&rpt=rad

и
Код

http://www.yandex.ru/yandsearch?text=Сан-Донато


Применяю функцию rawurldecode(), получаю в первом случае то, что надо (русские символы), во втором случае 
Код
http://www.yandex.ru/yandsearch?text=Сан-Донато


Как добиться нормального преобразования в любом случае?
PM MAIL WWW Jabber   Вверх
Всемогущий
Дата 29.11.2007, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 13



Код

<?php

echo urldecode('http://www.yandex.ru/yandsearch?text=%D0%C0%D1%CF%C8%D1%C0%CD%C8%C5+%DD%CB%C5%CA%D2%D0%CE%CF%CE%C5%C7%C4%CE%C2+%D1%C2%C5%D0%C4%CB%CE%C2%D1%CA+%CD-%D2%C0%C3%C8%CB&rpt=rad');

?>



--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
OlegNT
Дата 29.11.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 21.3.2006
Где: Нижний Тагил

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



urldecode() 
Код

%D0%A1%D0%B0%D0%BD-%D0%94%D0%BE%D0%BD%D0%B0%D1%82%D0%BE
 преобразует в 
Код

Сан-Донато



Цитата(Всемогущий @  29.11.2007,  15:12 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие    То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 


А это к чему? Здесь форум для того, чтобы задавать вопросы и получать помощь или чтобы задавать вопросы и получать ответы в виде "Какой ты тупой, какой ты ламерье" и им подобные? Вы наверняка не знаете типы и устройство трамвайных стрелок, но я же не говорю, что Вы живете 
Цитата(Всемогущий @  29.11.2007,  15:12 Найти цитируемый пост)
через ж

PM MAIL WWW Jabber   Вверх
Всемогущий
Дата 29.11.2007, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 13



Сан-Донато  это UTF8


--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Vaulter
Дата 29.11.2007, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 6
Всего: 22



Код

define ('CONVERTCP','windows-1251');//кодировка, которую мы (система) понимаем
                    if(function_exists('mb_convert_encoding'))//mb_encoding? FUCK
                    {
                        $enc = strtolower( mb_detect_encoding($request) );
                        if( $enc && $enc!=CONVERTCP )
                        {
                            $request = mb_convert_encoding($request,CONVERTCP,$enc);
                        }
                    }
//ИЛИ принудительно iconv


Добавлено через 41 секунду
ps: но иногда mb_detect_encoding валится (на китайских и прочей),
также, стоит почитать про него в мануале =)


--------------------
PM MAIL WWW ICQ   Вверх
Всемогущий
Дата 29.11.2007, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 13



Код

<?php
   echo  iconv("UTF-8","WINDOWS-1251" , urldecode('%D0%95%D0%B4%D0%B8%D0%BD%D0%B0%D1%8F%20%D1%80%D0%BE%D1%81%D1%81%D0%B8%D1%8F'));
?>



--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Azalis
Дата 29.11.2007, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Оу...

Друзья мои, может тогда и мне поможете, тема примерно такая же, толко проблема вот в чём:

с помощью AJAX передаю скрипту набор параметров, некоторые из которых имеют и русские буквы в содержании.
Функцией escape() (JavaScript) перевожу их в последовательность типа " %u041F%u0440%u043E%u0432%u0435%u0440%u043A%u0430 ". Если не перевожу сам, она автоматом выставляет всё также...
Скрипт получает такого рода данные и должен записать их в БД в нормальном виде. Ни одна из приведённых выше функций не помогает, равно как и функции приведения к данной кодировке.

В JavaScript есть функция unescape() которая возвращает всё в первозданный вид.
Вопрос: есть ли подобная функция в PHP?
PM MAIL WWW ICQ Skype MSN   Вверх
OlegNT
Дата 29.11.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 21.3.2006
Где: Нижний Тагил

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



Хм... с iconv 

Код

http://www.yandex.ru/yandsearch?text=%D0%C0%D1%CF%C8%D1%C0%CD%C8%C5+%DD%CB%C5%CA%D2%D0%CE%CF%CE%C5%C7%C4%CE%C2+%D1%C2%C5%D0%C4%CB%CE%C2%D1%CA+%CD-%D2%C0%C3%C8%CB&rpt=rad


преобразуется в 
Код
http://www.yandex.ru/yandsearch?text=



Всемогущий, не догнал сначала, что цитата - это подпись. Извиняюсь. Но цитата в подписи может быть неправильно понята  smile 
PM MAIL WWW Jabber   Вверх
Всемогущий
Дата 29.11.2007, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 13



Vaulter, всё уже сказал

Добавлено через 3 минуты и 4 секунды
либо просто ищем регуляркой русские символы ,если не нашли iconv smile 


--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
OlegNT
Дата 29.11.2007, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 21.3.2006
Где: Нижний Тагил

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



Цитата(Всемогущий @  29.11.2007,  16:18 Найти цитируемый пост)
Vaulter, всё уже сказал


Код

$referer = urldecode($referer);

$encoding = strtolower(mb_detect_encoding($referer));
if ($encoding && $encoding != 'windows-1251')
{
    $referer = mb_convert_encoding($referer, 'windows-1251', $encoding);
}


Код

%D1%82%D1%80%D0%B0%D0%BC%D0%B2%D0%B0%D0%B9+%D0%BA%D0%B0%D1%80%D0%BF%D0%B8%D0%BD%D1%81%D0%BA%D0%B0
 корректно переводит в "трамвай карпинска"

Код

%CC%E0%F0%F8%F0%F3%F2+605
 переводит в "<пробел>605"

Код

%D0%C0%D1%CF%C8%D1%C0%CD%C8%C5+%DD%CB%C5%CA%D2%D0%CE%CF%CE%C5%C7%C4%CE%C2+%D1%C2%C5%D0%C4%CB%CE%C2%D1%CA+%CD-%D2%C0%C3%C8%CB
 переводит в "<пробел><пробел><пробел>-"

iconv тоже не переводит некоторые строки (преобразовывает в пустую строку).
PM MAIL WWW Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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