通过$ _GET访问URL中的#字符

VJu*_*une 2 javascript php url

我通过URL传递数据,然后使用PHP的$ _GET []函数访问它.如果URL中有某个"#",那么GET请求似乎会截断字符串.例如,

http://example.com/yyy.php?version=0.88&value=ART:C_Sharp_%28programming_language%29@Multi-paradigm_programming_language@Influenced D,F#,Java 5,Nemerle,Vala平台公共语言基础结构许可证CLR专有的常用文件扩展名.cs网站C在Wikibooks上的Sharp编程C#(发音为/siːːrp/ see sharp)是一种多范式编程语言,包括命令式,声明式,功能性,泛型,面向对象(基于类)和面向组件的编程规则. @ 10902

$_GET['value'] 收益:

ART:C_Sharp_(programming_language)@ Multi-paradigm_programming_language @受影响的D,F

有办法避免这种情况吗?我应该从发布到URL的值中删除所有#?

使用XMLHttpRequest()从客户端javascript代码访问URL位置.来自javascript功能encodeURIComponent()的编码字符串是,

ART%3AC_Sharp_%2528programming_language%2529%40Multi-paradigm_programming_language%40Influenced%20D%2C%20F%23%2C%20Java%205%2C%20Nemerle%2C%20Vala%20Platform%20Common%20Language%20Infrastructure%20License%20CLR%20Proprietary% 20Usual%20file%20extensions%20.cs%20Website%20C%20Sharp%20Programming%20AT%20Wikibooks%20C%23%20(发音%20%2F%CB%88si%CB%90%20%CB%88%CA% 83%C9%91rp%2F%20see%20sharp)%图20是%20A%20multi范%20programming%20language%20encompassing%20imperative%2C%20declarative%2C%20functional%2C%20generic%2C%20object为本%20(类基)%2C%20于是%的面向20component-%20programming%20disciplines.%8681

'yyy.php'记录的解码输出:

ART:C_Sharp_%28programming_language%29 @ Multi-paradigm_programming_language @受影响的D,F#,Java 5,Nemerle,Vala平台公共语言基础设施许可证CLR专有常用文件扩展名.cs网站C在Wikibooks C#进行Sharp编程(发音为/ËsiËËʃÉ'rp/ see sharp)是一种多范式编程语言,包括命令式,声明式,功能性,泛型,面向对象(基于类)和面向组件的编程规则.@ 8681

不使用encodeURIComponent()记录输出,应该是预期的结果:

ART:C_Sharp_(programming_language)@ Multi-paradigm_programming_language @Delled D,F#,Java 5,Nemerle,Vala平台公共语言基础设施许可证CLR专有常用文件扩展名.cs网站C在Wikibooks C#进行Sharp编程(发音为/siːːrp/ see sharp)是一种多范式编程语言,包括命令式,声明式,功能性,泛型,面向对象(基于类)和面向组件的编程规则.@ 8681

Phi*_*hil 5

#URL字符串中的A 是片段标识符.urlencode()在将其添加到URL之前,您需要使用该字符串.

您无法在yyy.php脚本中执行任何操作,因为PHP无法访问URL片段.

参考:http://en.wikipedia.org/wiki/Fragment_identifier