【发布时间】:2011-08-06 01:28:27
【问题描述】:
我通过 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 Sharp Programming at 维基教科书 C#(读作 /ˈsiː ˈʃɑrp/ 见尖锐)是一个多范式 编程语言包括 命令式,声明式,函数式, 通用的,面向对象的 (基于类)和面向组件 编程学科。@10902
$_GET['value'] 返回:
ART:C_Sharp_(programming_language)@Multi-paradigm_programming_language@Influenced 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)%20is%20a%20multi-paradigm%20programming%20language%20encompassing%20imperative%2C%20declarative%2C%20functional%2C%20generic%2C%20object-oriented% 20(基于类)%2C%20and%20面向组件%20编程%20学科。%8681
'yyy.php'记录的解码输出:
ART:C_Sharp_%28programming_language%29@Multi-paradigm_programming_language@Influenced D、F#、Java 5、Nemerle、Vala 平台 通用语言基础设施许可证 CLR 专有的常用文件扩展名 .cs 网站 C Sharp Programming at Wikibooks C#(读作 /ˈsiË ËˆÊƒÉ‘rp/see sharp) 是一个 多范式编程语言 包括命令式、声明式、 函数式的、通用的、面向对象的 (基于类)和面向组件 编程学科。@8681
不使用 encodeURIComponent() 的记录输出以及预期的结果:
ART:C_Sharp_(programming_language)@Multi-paradigm_programming_language@Influenced D、F#、Java 5、Nemerle、Vala 平台 通用语言基础设施许可证 CLR 专有的常用文件扩展名 .cs 网站 C Sharp Programming at 维基教科书 C#(读作 /ˈsiː ˈʃɑrp/ 见尖锐)是一个多范式 编程语言包括 命令式,声明式,函数式, 通用的,面向对象的 (基于类)和面向组件 编程学科。@8681
【问题讨论】:
-
你能把网址放在那里吗,你的网址里有
_%?? -
@experimentX:好的,我编辑了.....现在如何完全恢复编码/变形的字符?
-
好吧,我认为最好的方法似乎是将# 替换为%23。我不知道像# 这样的其他字符可能会造成麻烦。有什么想法吗?
标签: javascript php url