如何在PHP中正确地URL编码一个字符串?
  我正在创建一个搜索页面,在其中键入搜索查询并将表单提交给search.php?query=your query 。  什么PHP功能是最好的,我应该用于编码/解码搜索查询? 
  对于URI查询使用urlencode / urldecode ;  为其他任何使用rawurlencode / rawurldecode 。 
  urlencode和rawurlencode之间的区别在于 
urlencode根据application / x-www-form-urlencoded进行编码(空间用+编码) rawurlencode根据纯百分比编码(空间编码为%20 )进行编码。 狡猾的urlencode()和urldecode()。
  但是,您不需要对出现在$_POST和$_GET变量使用urldecode() 。 
这是我的用例,它需要特殊数量的编码。 也许你认为它是人为的,但我们在生产中运行这个。 巧合的是,这涵盖了所有类型的编码,因此我将其作为教程进行发布。
用例描述
  有人刚刚在我们的网站上购买了预付礼品卡(“代币”)。  令牌具有相应的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()处理。 
测试用例
你应该看到:
"args": {
  "token": "w%a&!e#"^2(^@azW"
}, 
  当然这是上面的$token的JSON表示。 
上一篇: How to properly URL encode a string in PHP?
下一篇: Count characters after given symbol in oracle varchar column value
