编码javascript url以传递#(hashtag)

时间:2015-07-10 09:03:57

标签: javascript php

我将URL传递给PHP文件,在其中更改某些颜色等。其中一种颜色是#ccc,并以&background=#ccc的形式传递,这会破坏我的PHP文件(它在该主题标签处停止我的$_GET参数,之后的所有内容都不会传递)

我已经尝试将我的网址编码为encodeURIComponent(url),这也编码了我​​的网址?和&我用我的$ _GET字符串。使用encodeURI()时,主题标签根本不会被编码。

任何想法如何将我的所有变量传递给我的PHP文件,以便我可以在那里阅读它们?

请注意它是样式表href。我不能/不会使用jQuery的$.get()方法,但只需解析一个标记并将其附加到我的内容中:

<link href="http://localhost:8888/test.php/layout.scss?primarycolor=hotpink&secondarycolor=white&background=#ccc&textcolor=black&linkcolor=black&font=Futura&" type="text/css" rel="stylesheet" id="custom-style">

3 个答案:

答案 0 :(得分:4)

encodeURIComponent是正确的,但您只想在#ccc位上使用它。如果您是手动执行此操作(例如,在<link>标记中进行硬编码),请使用%23代替#

答案 1 :(得分:1)

哈希标签不会传递给服务器,因此这就是他们破坏你的脚本的原因。对于编码,如果encodeURIComponent()有效,您可能必须对URL中的每个值进行编码。或者,您可以使用简单的字符串替换替换您的网址中的#符号。

答案 2 :(得分:0)

您可以实施专有编码系统。例如,说“#”等于“! - !”例如。

然后在服务器端PHP代码中,您可以运行str_replace("!-!", "#", $getVar)语句以正确使用颜色代码。然而,并不理想。

另外,请尝试:htmlentitieshtml_entity_decodehttp://php.net/htmlentities