Tworzę stronę wyszukiwania, w której wpisujesz zapytanie, a formularz jest przesyłany pod numer search.php?query=your query
. Która funkcja PHP jest najlepsza i którą powinienem użyć do kodowania/dekodowania zapytania?Jak prawidłowo URL kodować ciąg w PHP?
Odpowiedz
Dla zapytania URI użyj urlencode
/urldecode
; dla czegokolwiek innego użyj rawurlencode
/rawurldecode
.
Różnica urlencode
i rawurlencode
jest
urlencode
koduje według application/x-www-form-urlencoded (przestrzeń zakodowane+
) podczasrawurlencode
koduje według zwykłego Percent-Encoding (przestrzeń jest zakodowany%20
).
* application/x-www-form-urlencoded * to tylko specjalny wariant * Procent-Kodowanie * i stosuje się tylko do kodowania danych formularzy HTML. – Gumbo
Które kodowanie jest lepsze, czy kod formułowo-urnowy, czy procent? –
@Click Upvote: Nie można ich porównywać w ten sposób. Format * application/x-www-form-urlencoded * to * format * Procent-Kodowanie * z tym wyjątkiem, że przestrzeń jest zakodowana za pomocą '+' zamiast '% 20'. Poza tym, * application/x-www-form-urlencoded * służy do kodowania danych formularzy, podczas gdy * Procent-Kodowanie * ma bardziej ogólne zastosowanie. – Gumbo
Sprytnie nazwane urlencode() i urldecode().
Jednak nie powinieneś używać urldecode()
dla zmiennych, które pojawiają się w $_POST
i $_GET
.
Sprytnie nazwany' rawurlencode' i 'rawurldecode' ... –
Oto mój przypadek użycia, który wymaga wyjątkowej ilości kodowania. Może uważasz, że to się udało, ale uruchamiamy to na produkcji. Przypadkowo obejmuje to każdy rodzaj kodowania, więc publikuję jako samouczek.
przypadków użycia Opis
Ktoś właśnie kupił karty prepaid prezent („tokena”) na naszej stronie internetowej. Tokeny mają odpowiednie adresy URL, aby je wykorzystać. Ten klient chce wysłać go do kogoś innego. Nasza strona internetowa zawiera link mailto
, który pozwala im to zrobić.
kod 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>';
Uwaga: powyższa zakłada jesteś wyprowadzanie do dokumentu text/html
. Jeśli typem nośnika wyjściowego jest text/json
, po prostu użyj $retval['url'] = $mailToUri;
, ponieważ kodowanie wyjścia jest obsługiwane przez json_encode()
.
przypadek testowy
- Uruchomienie kodu na stronie testowej PHP (istnieje kanoniczny należałoby wspomnieć tutaj?)
- Kliknij link
- Wyślij email
- Uzyskaj wiadomość e-mail
- Kliknij ten link
Powinieneś zobaczyć:
"args": {
"token": "w%a&!e#\"^2(^@azW"
},
I oczywiście jest to reprezentacja JSON $token
powyżej.
- 1. Jak mogę kodować adresy URL w Pythonie?
- 2. Jak uri kodować ciąg w jsp?
- 3. jak kodować/dekodować prosty ciąg
- 4. Jak kodować URL w Pythonie 3?
- 5. Jak prawidłowo rozmieścić aplikacje PHP?
- 6. jQuery - Czy muszę kodować zmienną URL?
- 7. jak kodować piękne PHP razem z HTML?
- 8. Dekodowanie URL w PHP
- 9. Jak kodować procentowo w Javie?
- 10. Jak procentowo kodować parametry adresu URL w Pythonie?
- 11. Jak kodować okresy dla adresów URL w JavaScript?
- 12. jak kodować Json w yii2?
- 13. Jak mogę kodować binarnie ciąg znaków w python?
- 14. Jak prawidłowo uciec ciąg znaków do wykorzystania w wyrażeniu regularnym w PHP?
- 15. PHP: Jak kodować U + FFFD w celu dokonania zamiany?
- 16. PHP: RFC-2231 Jak kodować ciąg znaków UTF-8 jako plik z nazwą zbioru?
- 17. Sprawdź, czy ciąg zawiera nic oprócz adresu URL w PHP
- 18. jak kodować atrybut href w HTML
- 19. Jak avro kodować binarnie mój ciąg json do tablicy bajtów?
- 20. Jak kodować pojedynczy cudzysłów/apostrof w JSON.NET
- 21. Jak "dekodować URL" ciąg w Emacs Lisp?
- 22. ciąg kwerendy w url $ zasobów
- 23. Jak kodować ROT13 w Pythonie3?
- 24. Jak prawidłowo zakodować akcenty kodujące?
- 25. PHP urlencode - kodować tylko nazwę pliku i nie dotykać ukośniki
- 26. Jak kodować ciągi takie jak \ u00d6?
- 27. Jak kodować demona Mono
- 28. jak kodować pasek postępu
- 29. Jak kodować zapisane komentarze?
- 30. Jak kodować słownik Pythona?
Czy występują jakieś problemy? Przeglądarki i PHP powinny obsługiwać to automatycznie (np. Wstawiając "pasek foo" w polu tekstowym, tworzy w adresie URL 'foo + bar'). –
@Felix Zadzwonię do skryptu wyszukiwarki używając 'file_get_contents' –