PHP $ _GET ['word']当word是以'#'字符开始的字符串时不起作用
问题描述:
我正在使用google可视化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传送的字和日期的字包含“#”作为第一个字符。任何关于正在发生的事情的指针以及我如何解决这个问题?
谢谢!
答
#
字符表示URL fragment的开头。如果将数据发送到服务器,则该数据将不会按照与普通$_GET
参数相同的方式进行解码。
URL中的文字#
必须编码为%23
才能正常工作。所以你的网址是http://...../articles.php?word=%23nature&datetime=11-7-2011-5
。然后var_dump($word);
将显示string(7) "#nature"
默认情况下,#标记不属于查询字符串(?) – supertopi
的所有url的片段部分#(#包含的)之后的所有内容都不会发送到您的服务器。这是一个浏览器的东西afaik – malletjo