阅读&;正在通过GET传递的字符


Reading & character that is being passed through GET

我正在读取GET查询字符串的内容,每次遇到示例Blackstone Woodfire & Grill&时,GET都在读取Blackstone Woodfire

如果可能的话,我该如何避免这种情况?

我知道我可以对参考页面中的特殊字符进行编码,然后在指向此页面时对其进行解码。

我只是好奇。

问题是使用get发送的参数使用&分隔;。所以如果你有一个类似的url

 http:/example.com?param_1=value_1&param_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