我正在读取GET
查询字符串的内容,每次遇到示例Blackstone Woodfire & Grill
的&
时,GET
都在读取Blackstone Woodfire
。
如果可能的话,我该如何避免这种情况?
我知道我可以对参考页面中的特殊字符进行编码,然后在指向此页面时对其进行解码。
我只是好奇。
问题是使用get发送的参数使用&分隔;。所以如果你有一个类似的url
http:/example.com?param_1=value_1¶m_2=value_2
您将拥有类似的$_GET数组
array(
param_1 => 'value_1',
param_2 => 'value_2'
);
现在,如果你发送和url类似:
http://example.com?param_1=value_1 & value_2
您将拥有类似的$_GET数组
array(
param_1 => 'value_1 ',
' value_2' => ''
);
因为这就是发送GET参数的工作方式。在接收方面,你能做的不多,问题在于另一端。要发送的GET参数必须在使用的PHP中进行编码
echo 'http://example.com?param_1=' . urlencode('value_1 & value_2');
Javascript使用encodeURIComponent()来解决这个问题。当PHP创建$_get全局时,它会在每个get参数上自动调用urldecode()。
您可以使用urlencode对get字符串进行编码。稍后,如果你想从$_GET-urldecode中获取它。
您可以将所有安培数替换为%26