Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过$\u GET访问URL中的#字符_Javascript_Php_Url - Fatal编程技术网

Javascript 通过$\u GET访问URL中的#字符

Javascript 通过$\u GET访问URL中的#字符,javascript,php,url,Javascript,Php,Url,我通过URL传递数据,然后使用PHP的$\u GET[]函数访问它。如果URL中某处有一个“#”,那么GET请求似乎会截断字符串。比如说, D、 F#,Java 5,Nemerle,Vala平台 公共语言基础设施许可证 CLR专有文件扩展名 .cs网站C Sharp编程位于 维基百科C#(发音为/ˈsiˈʃrp)/ 见夏普)是一个多范式 程序设计语言 命令式、声明式、功能性、, 通用的,面向对象的 (基于类)和面向组件 编程规则。@10902 $\u GET['value']返回: 艺术:C_

我通过URL传递数据,然后使用PHP的$\u GET[]函数访问它。如果URL中某处有一个“#”,那么GET请求似乎会截断字符串。比如说,

D、 F#,Java 5,Nemerle,Vala平台 公共语言基础设施许可证 CLR专有文件扩展名 .cs网站C Sharp编程位于 维基百科C#(发音为/ˈsiˈʃrp)/ 见夏普)是一个多范式 程序设计语言 命令式、声明式、功能性、, 通用的,面向对象的 (基于类)和面向组件 编程规则。@10902

$\u GET['value']
返回:

艺术:C_Sharp_(编程语言)@多范式编程_language@InfluencedD,F

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

URL位置是使用XMLHttpRequest()从客户端javascript代码访问的。javascript功能encodeURIComponent()中的编码字符串为

艺术%3AC_Sharp_%2528编程语言%2529%40多范式编程语言%40受影响的%20D%2C%20F%23%2C%20Java%205%2C%20Nemerle%2C%20Vala%20Platform%20Common%20Language%20Infrastructure%20License%20CLR%20privative%20file%20extensions%20.cs%20C%20C%20C%20harp%20at%20Wikibooks%20C%23%20(发音为%20%2F%CB%88si%CB%90%20%CB%88%CA%83%C9%91rp%2F%20see%20sharp)%20是%20a%20多范例%20编程%20语言%20包含%20命令式%2C%20声明式%2C%20函数式%2C%20通用的%2C%20面向对象的%20(基于类的)%2C%20和%20面向组件的%20编程%20规程。%8681

“yyy.php”记录的解码输出:

艺术:C_Sharp_%28编程语言%29@Multi-范例编程_language@Influenced D、 F#,Java 5,Nemerle,Vala平台 公共语言基础设施许可证 CLR专有文件扩展名 .cs网站C Sharp编程位于 维基百科C#(发音为/ˈsiË) ˈʃ(rp/见夏普)是一种 多范式程序设计语言 包含命令式、声明式、, 功能的、通用的、面向对象的 (基于类)和面向组件 编程规程@8681

未使用encodeURIComponent()记录的输出以及预期结果:

艺术:C_Sharp_(编程语言)@多范式编程_language@Influenced D、 F#,Java 5,Nemerle,Vala平台 公共语言基础设施许可证 CLR专有文件扩展名 .cs网站C Sharp编程位于 维基百科C#(发音为/ˈsiˈʃrp)/ 见夏普)是一个多范式 程序设计语言 命令式、声明式、功能性、, 通用的,面向对象的 (基于类)和面向组件 编程规程@8681

URL字符串中的
#
是一个片段标识符。在将其添加到URL之前,需要先删除该字符串

您无法在
yyy.php
脚本中对此进行任何操作,因为php无权访问URL片段


Ref:

您需要转义该字符,因为浏览器通常使用该字符作为
标签来滚动到特定元素


在PHP中,您在查询字符串上使用
urlencode()
函数。

URL中
#
后面的部分是片段,永远不会发送到服务器。它仅由用户代理处理。您需要使用JavaScript与之交互


不过,在您的示例中,您需要对其进行转义,以便从字面上理解其含义。正如其他人所指出的,
urlencode()
非常适合于此。

尝试传递参数编码

关于你的js

window.location = 'index.php?value='+encodeURIComponent('ART:C_Sharp_%28programming_language%29@Multi-paradigm_programming_language@Influenced D, F#, Java 5, Nemerle, Vala Platform Common Language Infrastructure License CLR Proprietary Usual file extensions .cs Website C Sharp Programming at Wikibooks C# (pronounced /ˈsiː ˈʃɑrp/ see sharp) is a multi-paradigm programming language encompassing imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines.@10902');
更新

window.location = 'index.php?version=0.88&value='+encodeURIComponent('ART:C_Sharp_(programming_language)@Multi-paradigm_programming_language@Influenced D, F#, Java 5, Nemerle, Vala Platform Common Language Infrastructure License CLR Proprietary Usual file extensions .cs Website C Sharp Programming at Wikibooks C# (pronounced /ˈsiː ˈʃɑrp/ see sharp) is a multi-paradigm programming language encompassing imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines.@8681');

你是否尝试用解析url

echo parse_url($url, PHP_URL_FRAGMENT);

这里很挑剔,但是位置头值应该是一个完整的URI,包括scheme(http、https等)、host和Path抱歉我忘了提到…..这些值是使用XMLHttpRequest()从客户端javascript发送的。javascript中有没有类似的函数来处理这个问题?@experimentX:网站说“此函数对特殊字符进行编码,除了:,/?:@&=+$\”。我缺少什么吗?@user548245使用encodeURIComponent并请一些使用显示名称。@实验X:谢谢。对于解码,那么在'yyy.php'上我应该使用'urldecode()'它在javascript编码字符串上可以正常工作吗?很抱歉,我是新手。非常感谢您的回复。啊,很抱歉,我忘了提及…..这些值是使用XMLHttpRequest()从客户端javascript发送的。'。javascript中有没有类似的函数来处理这个问题?你能把url放在那里吗,在你的url中有
%
。@experimentX:好的,我编辑了…..现在我如何完全恢复编码/变形的字符?好吧,我想最好的方法似乎是用%23替换#。我不知道像#这样的其他字符可能会造成麻烦。有什么想法吗?
echo parse_url($url, PHP_URL_FRAGMENT);