За последние 24 часа нас посетили 23923 программиста и 1666 роботов. Сейчас ищут 828 программистов ...

Когда использовать urlencode, а когда rawurlencode?

Тема в разделе "PHP для новичков", создана пользователем Devzirom, 12 янв 2010.

  1. Devzirom

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

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    В общем я выяснил, что rawurlencode() превращает пробелы в %20, а urlencode в +. Зачем это нужно? Когда юзать urlencode, а когда rawurlencode?
     
  2. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Э, вроде посылка через POST кодирует так же как urlencode(), а GET (раньше) кодировалась как rawurlencode().

    То есть использование urlencode() предпочтительнее для GET и исключительная для POST.

    Эм, ещё раз. Для GET - без разницы как ты будешь кодировать УРЛ, но для POST формат важен.

    Короче, используй urlencode(). :)
     
  3. Devzirom

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

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    PHP:
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5. <title>URL-functions test</title>
    6. </head>
    7.  
    8. <body>
    9. <?php $url = 'http://yandex.ru/yandsearch?text=%D0%BF%D1%80%D0%BE%D0%B1%D0%B5%D0%BB%2B%D0%BF%D1%80%D0%BE%D0%B1%D0%B5%D0%BB+%D0%BF%D1%80%D0%BE%D0%B1%D0%B5%D0%BB&lr=50'; ?>
    10. <p>url = <input type="text" value="<?php echo($url); ?>" size="128" maxlength="1024" /></p>
    11. <p>urldecode = <input type="text" value="<?php echo(urldecode($url)); ?>" size="128" maxlength="1024" /></p>
    12. <p>rawurldecode = <input type="text" value="<?php echo(rawurldecode($url)); ?>" size="128" maxlength="1024" /></p>
    13. <p>decodeURI = <input id="url" type="text" value="" size="128" maxlength="1024" /></p>
    14. <script type="text/javascript">
    15. var url = '<?php echo($url); ?>';
    16. document.getElementById('url').value = decodeURI(url);
    17. </script>
    18. </body>
    19. </html>
    на выходе имеем:

    url = http://yandex.ru/yandsearch?text=%D0%BF ... 0%BB&lr=50

    urldecode = http://yandex.ru/yandsearch?text=пробел+пробел пробел&lr=50

    rawurldecode = http://yandex.ru/yandsearch?text=пробел+пробел+пробел&lr=50

    decodeURI = http://yandex.ru/yandsearch?text=пробел%2Bпробел+пробел&lr=50

    мне нужен такой результат, который дает функция javascript: decodeURI, но в php!
     
  4. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк