За последние 24 часа нас посетили 18379 программистов и 1605 роботов. Сейчас ищут 938 программистов ...

как правильно раскодировать URL?

Тема в разделе "PHP для новичков", создана пользователем Hard1911, 16 май 2008.

  1. Hard1911

    Hard1911 Активный пользователь

    С нами с:
    16 апр 2008
    Сообщения:
    44
    Симпатии:
    0
    У себя на сайте сделал лог в который пушутся данные с каторыми заходят ко мне на сайт пользователи, а конкретно пишется ip, браузер и URL предыдущей страницы, так вот возникла проблема с декодированием URL как например
    Код (Text):
    1.  
    2. http://www.yandex.ru/yandsearch?text=%D0%BA%D1%83%D0%BA%D1%83&clid=9582
    переделать в
    Код (Text):
    1.  
    2. http://www.yandex.ru/yandsearch?text=куку&clid=9582
    я пробывал использовать функции urldecode и rawurldecode но у меня получались кракозябры
    Код (Text):
    1.  
    2. http://www.yandex.ru/yandsearch?text=РєСѓРєСѓ&clid=9582
    Как этого избежать и правильно раскодировать URL?
     
  2. Taris

    Taris Активный пользователь

    С нами с:
    13 май 2008
    Сообщения:
    29
    Симпатии:
    0
    Юзайте вместо windows-1251 utf-8
     
  3. Hard1911

    Hard1911 Активный пользователь

    С нами с:
    16 апр 2008
    Сообщения:
    44
    Симпатии:
    0
    как установить не могли бы обьяснить...:)
     
  4. Taris

    Taris Активный пользователь

    С нами с:
    13 май 2008
    Сообщения:
    29
    Симпатии:
    0
    При выводе устанавливаем:
    HTML:
    1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    Вообще желательно во всех проектах использовать UTF-8, избавите себя от проблем с кодировками навсегда.
     
  5. Hard1911

    Hard1911 Активный пользователь

    С нами с:
    16 апр 2008
    Сообщения:
    44
    Симпатии:
    0
    не получается
    PHP:
    1.  
    2. <?
    3. print "
    4. <html>
    5. <head>
    6. <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
    7. <title>Untitled 3</title>
    8. </head>
    9.  
    10. <body>";
    11. print rawurldecode("http://www.yandex.ru/yandsearch?text=%D0%BA%D1%83%D0%BA%D1%83&clid=9582");
    12. print urldecode("http://www.yandex.ru/yandsearch?text=%D0%BA%D1%83%D0%BA%D1%83&clid=9582");
    13.  
    14. print "</body>
    15. </html>";
    16. ?>
    17.  

    На выходе имеем
    HTML:
    1.  
    2. [url=http://www.yandex.ru/yandsearch?text=]http://www.yandex.ru/yandsearch?text=[/url]РєСѓРєСѓ&clid=9582
    3. [url=http://www.yandex.ru/yandsearch?text=]http://www.yandex.ru/yandsearch?text=[/url]РєСѓРєСѓ&clid=9582
    4.  
    гдето ошибка?
     
  6. TROODON

    TROODON Активный пользователь

    С нами с:
    4 ноя 2007
    Сообщения:
    112
    Симпатии:
    0
    PHP:
    1. $text = iconv("UTF-8","windows-1251",  $text2);
     
  7. Hard1911

    Hard1911 Активный пользователь

    С нами с:
    16 апр 2008
    Сообщения:
    44
    Симпатии:
    0
    спасибо дружище
     
  8. Taris

    Taris Активный пользователь

    С нами с:
    13 май 2008
    Сообщения:
    29
    Симпатии:
    0
    Да, если изначально данные у вас в другой кодировке, то нужен iconv =) У меня все в UTF-8, поэтому преобразуется сразу.
     
  9. kokus

    kokus Новичок

    С нами с:
    14 фев 2015
    Сообщения:
    3
    Симпатии:
    0
    Со страницы:

    site.ru/222.php?utm_med_русский текст

    перехожу на страницу site.ru/111.php

    в файле 111.php использую такой код для вывода ссылки с которой был переход:


    <?php
    $referer = getenv("HTTP_REFERER");
    echo $referer;
    ?>

    Но ссылка выводится на экран в таком виде:

    site.ru/222.php?utm_med_%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%20%D1%82%D0%B5%D0%BA%D1%81%D1%82


    скажите пожалуйста что нужно написать в файле 111.php чтобы кириллица отображалась нормально. Т.е. так:

    site.ru/222.php?utm_med_русский текст

    этот вариант:

    PHP:
    1. $text = iconv("UTF-8","windows-1251", $text2);
    Что-то не сработал. А может я как-то не правильно его применил.
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    потому что там не кодовая страница другая а кодировка символов. urldecode() в помощь.
     
  11. kokus

    kokus Новичок

    С нами с:
    14 фев 2015
    Сообщения:
    3
    Симпатии:
    0
    Сделал так:

    <?php
    $referer = getenv("HTTP_REFERER");
    echo urlencode($referer);
    ?>

    Но это не помогло. Нужно как-то по-другому?
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нужно читать
     
  13. kokus

    kokus Новичок

    С нами с:
    14 фев 2015
    Сообщения:
    3
    Симпатии:
    0
    Ganzal, igordata, большое спасибо!
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Да не за что. Удобная функция, да.