Bạn đang xem: How does urlencode work in php urlencode() function, using php urlencode and urldecode
The difference between urlencode and rawurlencode is that
However, you shouldn"t need to use urldecode() on variables that appear in $_POST và $_GET.
Somebody just bought a prepaid gift card ("token") on our website. Tokens have corresponding URLs khổng lồ redeem them. This customer wants to thư điện tử the URL to lớn someone else. Our web page includes a mailto links that lets them vì chưng that.
// The order system generates some opaque token$token = "w%a&!e#"^2(^
azW";// Here is a URL khổng lồ 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 = "Please enter your shipping details here: " . $redeemUrl;// A URI for the e-mail as prescribed$mailToUri = "mailto:?subject=" . Rawurlencode($subject) . "&body=" . Rawurlencode($body);// Print an HTML element with that mailto linkecho "Email your friend";Note: the above assumes you are outputting to lớn a text/html document. If your output truyền thông type is text/json then simply use $retval<"url"> = $mailToUri; because đầu ra encoding is handled by json_encode().
You should see:
"args": "token": "w%a&!e#"^2(^
azW", and of course this is the JSON representation of $token above.
Xem thêm: phần mềm hs 2018
rawurlencode()function.
ASP.NET has the
Server.URLEncode()function.
In JavaScript, you can use the
encodeURIComponent()function.
/** * UrlEncoder make it easy khổng lồ encode your URL */class UrlEncoder public const STANDARD_RFC1738 = 1; public const STANDARD_RFC3986 = 2; public const STANDARD_CUSTOM_RFC3986_ISH = 3; // địa chỉ cửa hàng more here static function encode($string, $rfc) switch ($rfc) case self::STANDARD_RFC1738: return urlencode($string); break; case self::STANDARD_RFC3986: return rawurlencode($string); break; case self::STANDARD_CUSTOM_RFC3986_ISH: // địa chỉ your custom encoding $entities = <"%21", "%2A", "%27", "%28", "%29", "%3B", "%3A", "%40", "%26", "%3D", "%2B", "%24", "%2C", "%2F", "%3F", "%25", "%23", "%5B", "%5D">; $replacements = <"!", "*", """, "(", ")", ";", ":", "
", "&", "=", "+", "$", ",", "/", "?", "%", "#", "<", ">">; return str_replace($entities, $replacements, urlencode($string)); break; default: throw new Exception("Invalid RFC encoder - See class const for reference"); break; Use example:
$dataString = "https://www.google.pl/search?q=PHP is **great**!&id=123&css=#kolo&email=me
liszka.com)";$dataStringUrlEncodedRFC1738 = UrlEncoder::encode($dataString, UrlEncoder::STANDARD_RFC1738);$dataStringUrlEncodedRFC3986 = UrlEncoder::encode($dataString, UrlEncoder::STANDARD_RFC3986);$dataStringUrlEncodedCutom = UrlEncoder::encode($dataString, UrlEncoder::STANDARD_CUSTOM_RFC3986_ISH);Will output:
string(126) "https%3A%2F%2Fwww.google.pl%2Fsearch%3Fq%3DPHP+is+%2A%2Agreat%2A%2A%21%26id%3D123%26css%3D%23kolo%26email%3Dme%40liszka.com%29"string(130) "https%3A%2F%2Fwww.google.pl%2Fsearch%3Fq%3DPHP%20is%20%2A%2Agreat%2A%2A%21%26id%3D123%26css%3D%23kolo%26email%3Dme%40liszka.com%29"string(86) "https://www.google.pl/search?q=PHP+is+**great**!&id=123&css=#kolo&email=me
liszka.com)"* Find out more about RFC standards:https://datatracker.ietf.org/doc/rfc3986/and urlencode vs rawurlencode?
Well, if you are building a query string, then I say: "Never manually craft a URL query string in PHP—always hotline http_build_query() for stability/reliability."
Demo:
$array = < "query" => "your query", "example" => null, "Qbert says:" => "&%=#?/">;echo http_build_query($array);echo " --- ";echo http_build_query($array, "", "&");Output:
query=your+query&Qbert+says%3A=%26%25%3D%23%3F%2F---query=your+query&Qbert+says%3A=%26%25%3D%23%3F%2FThe fine print on this function is that if an element in the đầu vào array has a null value, then that element will not be included in the output đầu ra string.
Here is an educational answer on the Joomla Stack Exchange site which encourages the use of & as the custom delimiter: Why are Joomla URL query strings commonly delimited with "&" instead of "&"?
Initially packaging your query string data in array size offers a compact & readable structure, then the điện thoại tư vấn of http_build_query() does the hard work và can prevent data corruption. I generally opt for this technique even for small query string construction.