我有以下地址:
马萨诸塞州波士顿市大街123号,02137
我需要一个地址来通过URL保持完整,因此我尝试了以下操作:
echo urlencode($address);
echo rawurlencode($address);
问题是逗号一直被转换成&符! ︎
如何防止(客户端?PHP?在此我不确定)将逗号转换成&符吗?
HTTP查询为address
,将发生以下情况:
print_r($_GET);
收益:
数组(
[地址] => 123大街
[波士顿马萨诸塞州] =>
[02137] =>
)
答案 0 :(得分:1)
如果将它们转换为“&”号,则说明出现了严重错误,因为urlencode
和rawurlencode
都将逗号转换为%2C
。
使用123 Main Street, Boston Massachusetts, 02137
对字符串rawurlencode
进行编码
应该给您123%20Main%20Street%2C%20Boston%20Massachusetts%2C%2002137
。
从这里开始,只需从URL读取时使用rawurldecode
即可将编码后的字符串转换回原始字符串:
$address = "123 Main Street, Boston Massachusetts, 02137";
echo $address; // 123 Main Street, Boston Massachusetts, 02137
$encoded = rawurlencode($address);
echo $encoded; // 123%20Main%20Street%2C%20Boston%20Massachusetts%2C%2002137
$decoded = rawurldecode($encoded);
echo $decoded; // 123 Main Street, Boston Massachusetts, 02137
可以在 here 上看到它。