我正在创建搜索页面,在其中键入搜索查询并将表单提交到search.php?query=your query
。什么PHP功能是最好的,我应该用于编码/解码搜索查询?如何在PHP中正确地对URL进行编码?
61
A
回答
108
对于URI查询使用urlencode
/urldecode
;为其他任何使用rawurlencode
/。
urlencode
和rawurlencode
之间的差别在于
urlencode
根据application/x-www-form-urlencoded编码(空间编码有+
),而rawurlencode
根据平原Percent-Encoding(空间编码有编码%20
)。
14
狡猾地命名为urlencode()和urldecode()。
但是,对于出现在$_POST
和$_GET
中的变量,您不需要使用urldecode()
。
+3
巧妙命名的`rawurlencode`和`rawurldecode` ... – 2016-09-09 11:48:55
2
这是我的用例,它需要特殊量的编码。也许你认为它是人为的,但我们在生产中运行这个。巧合的是,这涵盖了所有类型的编码,因此我将其作为教程进行发布。
用例描述
有人只是在我们的网站购买了预付费礼品卡(“令牌”)。令牌具有相应的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"
},
当然这是上面$token
JSON表示。
相关问题
- 1. 如何正确地对字符串进行网址编码
- 2. 对URL进行URL编码
- 3. 如何在JSP中对URL进行URL编码?
- 4. 如何在jQuery/JavaScript中对URL进行编码并在ASP.NET中进行解码
- 5. 如何正确编码JavaScript中的URL?
- 6. 正确地url编码空格字符
- 7. 如何避免在cronjob中对图像url进行硬编码?
- 8. 在URL编码中对字典进行编码
- 9. 在Ruby中编码URL参数,并用php正确解码它
- 10. 如何正确的URL编码口音?
- 11. 如何在javascript中对url进行编码并在C中对其进行解码#
- 12. 如何在PHP中对Json数组进行编码?
- 13. 如何在PHP中对此算法进行编码?
- 14. JSON如何在PHP中对HTML进行编码?
- 15. 使用php和javascript进行URL编码?
- 16. 对地图进行地理编码
- 17. 如何对iPhone SDK中的@符号进行URL编码?
- 18. 在Google地图API中对IP地址进行地理编码
- 19. 如何在jsp中对cookie数据进行编码并在php中对其进行解码?
- 20. 如何在PHP中对多字节文件名进行编码并在JavaScript中对它们进行解码?
- 21. 在RSS提要的URL中对键值对进行编码
- 22. 如何在JavaScript和PHP中编码URL?
- 23. 如何对大量地址进行地理编码?
- 24. 如何对非标准业务地址进行地理编码
- 25. 如何在base64中对媒体进行编码给定的URL在Ruby中
- 26. 如何在谷歌地图中进行地理编码v3
- 27. 对URL进行编码无法正常工作
- 28. 使用正则表达式对URL字符串进行编码
- 29. 在Rails中对IP地址进行地理编码
- 30. 如何在PHP中进行URL重写?
您是否遇到任何问题?浏览器和PHP应该自动处理它(例如,将'foo bar'放在文本字段中,在URL中创建'foo + bar')。 – 2011-01-20 08:33:52
@Felix我打算使用`file_get_contents`调用搜索者脚本 – 2011-01-20 08:36:55