Я делаю страницу поиска, на которой вы вводите поисковый запрос, и форма отправляется в search.php?query=your query
. Какая функция PHP является лучшей и что я должен использовать для кодирования/декодирования поискового запроса?Как правильно URL кодировать строку в PHP?
ответ
Для запроса URI используйте urlencode
/urldecode
; для чего-либо еще используйте rawurlencode
/rawurldecode
.
Разница между urlencode
и rawurlencode
является то, что
urlencode
кодирует согласно application/x-www-form-urlencoded (пробел кодируется с+
), тогда какrawurlencode
кодирует в соответствии с обычной Percent-Encoding (пробел кодируется%20
).
* application/x-www-form-urlencoded * - это просто специальный вариант * Процент-кодирование * и применяется только для кодирования данных формы HTML. – Gumbo
Какая кодировка лучше, форма-urlencoded или процентов? –
@Click Upvote: Их нельзя сравнивать таким образом. Формат * application/x-www-form-urlencoded * * * * Формат Percent-Encoding *, за исключением того, что пространство кодируется с помощью '+' вместо '% 20'. Кроме того, * application/x-www-form-urlencoded * используется для кодирования данных формы, в то время как * Percent-Encoding * имеет более общее использование. – Gumbo
Хитроумно названные urlencode() и urldecode().
Однако вам не нужно использовать urldecode()
для переменных, которые отображаются в $_POST
и $_GET
.
Условно-называемый' rawurlencode' и 'rawurldecode' ... –
Вот мой прецедент, требующий исключительного количества кодирования. Может быть, вы думаете, что это надуло, но мы это делаем на производстве. Совпадение, это охватывает все типы кодирования, поэтому я отправляю в качестве учебника.
Пример использования Описание
Кто-то только что купил предоплаченные подарочные карты («маркер») на нашем сайте. У токенов есть соответствующие URL-адреса, чтобы их выкупить. Этот клиент хочет отправить его кому-то другому. Наша веб-страница содержит ссылку mailto
, которая позволяет им это делать.
PHP код
// The order system generates some opaque token
$token = 'w%a&!e#"^2(^@azW';
// Here is a URL to redeem that token
$redeemUrl = 'https://httpbin.org/get?token=' . urlencode($token);
// Actual contents we want for the email
$subject = 'I just bought this for you';
$body = 'I just bought a widget for you. Please enter your shipping details here: ' . $redeemUrl;
// A URI for the email as prescribed
$mailToUri = 'mailto:?subject=' . rawurlencode($subject) . '&body=' . rawurlencode($body);
// Print an HTML element that links to that page
echo '<a href="' . htmlspecialchars($mailToUri) . '">Email your friend</a>';
Примечание: выше предполагает, что вы вывода на text/html
документа. Если тип выходного носителя равен text/json
, просто используйте $retval['url'] = $mailToUri;
, потому что выходное кодирование обрабатывается json_encode()
.
Тестовый случай
- Выполнить код на тестовом PHP сайте (есть канонический один я должен упомянуть здесь?)
- Нажмите на ссылку
- Отправить письмо
- Получить электронное письмо
- Нажмите эту ссылку
Вы должны увидеть:
"args": {
"token": "w%a&!e#\"^2(^@azW"
},
И, конечно, это представление JSON из $token
выше.
- 1. Как правильно кодировать URL Строка
- 2. Как правильно кодировать URL-адрес в JavaScript?
- 3. Как правильно кодировать одиночную кавычку и & url
- 4. Как правильно кодировать многомерный массив в php
- 5. Как кодировать URL как строку base64?
- 6. Правильно кодировать url в urllib2 Python
- 7. Как кодировать URL в JavaScript и PHP?
- 8. Как кодировать/в URL
- 9. Как кодировать url в Python?
- 10. Как правильно кодировать анкерные hrefs
- 11. Как правильно url закодировать строку
- 12. Как кодировать строку Unicode в Base36 в PHP?
- 13. Правильно кодировать распыление.http.Uri.Path?
- 14. Кодировать строку URL без использования HttpServerUtility
- 15. Как кодировать BASE64 URL?
- 16. Как URL кодировать этот
- 17. Как кодировать URL
- 18. Как кодировать строку в Byte []
- 19. Как кодировать URL-адрес?
- 20. Как кодировать/декодировать пустую строку
- 21. Как кодировать URL в JavaScript,
- 22. как кодировать url в android?
- 23. Как кодировать: в URL-адресе?
- 24. Кодировать объектный литерал как строку запроса URL-адреса в Javascript
- 25. Кодировать строку в UCS2
- 26. Кодировать строку в JavaScript
- 27. Как кодировать URL-адрес NSString
- 28. Как правильно кодировать относительные пути в PHP/HTML?
- 29. Как правильно кодировать json в PHP (проблема с двойными кавычками)
- 30. Кодировать данные в PHP
У вас возникли проблемы? Браузеры и PHP должны обрабатывать это автоматически уже (например, помещая 'foo bar' в текстовое поле, создавая' foo + bar' в URL-адресе). –
@Felix Я собираюсь вызвать скрипт искателя, используя 'file_get_contents' –