我正在使用谷歌可视化API制作一个情节,然后使用事件处理在点击情节时获取一些信息。
当我点击该项目时,我打开一个新窗口,其中包含以下网址,该网址应显示名为articles.php的脚本的结果
http://..../articles.php?word=nature&datetime=11-4-2011-8
articles.php以
开头$word = $_GET['word'];
$datetime = $_GET['datetime'];
当我使用var_dump进行调试时如下:
var_dump($word);
var_dump($datetime);
我得到string(6) "nature" string(11) "11-4-2011-8"
,其余部分都可以使用。
但是,我遇到的问题是,如果单词格式如下:
word = "#someword"
然后我仍然看到以下网址
http://...../articles.php?word=#nature&datetime=11-7-2011-5
但是articles.php中的脚本不起作用。使用
var_dump($word);
var_dump($datetime);
我看到以下内容:
string(0) "" NULL
我不明白当单词包含“#”作为第一个字符时,为什么$_GET['word']
和$_GET['datetime]
不再能够抓取URL中传输的单词和日期。关于发生了什么以及如何解决这个问题的任何指示?
谢谢!
答案 0 :(得分:4)
要将#
符号用作get参数的值,必须对其进行URL编码。 URL中使用#
符号表示文档中的命名锚点或ID,并且不会解析为_GET
数组。
答案 1 :(得分:2)
#
字符表示URL fragment的开头。如果将数据发送到服务器,则该数据将不会以与普通$_GET
参数相同的方式进行解码。
网址中的文字#
必须编码为%23
才能正常使用。因此,您的网址为http://...../articles.php?word=%23nature&datetime=11-7-2011-5
。然后var_dump($word);
会显示string(7) "#nature"