Php 试图通过GET only发送部分发送参数
我正试图通过GET发送一个参数 这是我的网址:Php 试图通过GET only发送部分发送参数,php,url,get,Php,Url,Get,我正试图通过GET发送一个参数 这是我的网址: http://localhost/app_yy/public/hotel/cancel?AvailSply=ID_B2B_20#RA1B2BHB 这是打印功能的结果: Array ( [AvailSply] => ID_B2B_20 ) 然而,我被期望AvailSply成为ID\u B2B\u 20\RA1B2BHB——为什么它的一部分被切断了 问题 为什么它的一部分被切断了 因为参数包含一个#。如果您的URL中有一磅,它将不会被
http://localhost/app_yy/public/hotel/cancel?AvailSply=ID_B2B_20#RA1B2BHB
这是打印功能的结果:
Array
(
[AvailSply] => ID_B2B_20
)
然而,我被期望AvailSply
成为ID\u B2B\u 20\RA1B2BHB
——为什么它的一部分被切断了 问题
为什么它的一部分被切断了
因为参数包含一个#
。如果您的URL中有一磅,它将不会被视为GET参数的一部分,而是。查看那里的零件与
前面的零件如何相同?这是因为浏览器假设它是一个
这种语法--“在#
之后的任何字符都标识一个片段”--意味着不能在GET参数中包含该字符
解决方案
不过,你可以这样做,这意味着你的URL看起来像
http://localhost/app_yy/public/hotel/cancel?AvailSply=ID_B2B_20%23RA1B2BHB
而不是你所拥有的。注意%23
而不是#
——它在解码时会变成#
,但不会触发片段标识符解析
有很多库可以对内容进行URL编码——例如,在PHP中,您可以使用和
维基百科的文章很好地描述了片段标识符是什么,但用外行英语来说,片段标识符标记了你想在页面中的位置。例如,如果您想链接到文档中的副标题或页面中的选项卡,那么它非常有用。但是,在这里,它不是您想要的。在URL中,带有数字符号(#)散列或指向ancors的链接会被标记。
如果希望将#作为GET参数值传输,则必须将其转义:
- 在Javascript中: 逃逸(价值)
- 手动(%23代表#): ....?可用性=ID_B2B_20%23RA1B2BBB