如何解决使用& URL中的$ _GET错误
| 通过http://validator.w3.org/check运行我的网站时,收到很多错误消息,提示我的链接应使用ѭ0代替ѭ1。 所以我更新了代码,只是发现$_GET
不喜欢这样。
我的网址是:www.mysite.com/?foo=1&bar=2
我改成这样:www.mysite.com/?foo=1&bar=2
问题是做一个print_r($_REQUEST)
会得到以下结果:
Array ( [foo] => 1 [amp;storeid] => 2 )
为什么$_GET
,$_POST
和$_REQUEST
不能识别&
?
更新
这是我生成URL的方法之一:
$url = get_bloginfo(\'url\').\"/?foo=\".$element[\'name\'].\"&bar=\".$element[\'id\'];
$link = \'<a href=\"\'.$url.\'\" title=\"\'.$element[\'name\'].\'\">\'.$element[\'name\'].\'</a>\';
解决方法
&
是ѭ1HTML的HTML实体参考。 URL参数仍然由单个“ 1”分隔,但是如果以HTML提及URL,则需要对其进行编码。对于
<img src=\"img?width=100&height=100\" />
浏览器然后请求img?width=100&height=100
。
, 您必须在某处进行双重编码,以便您的链接:
www.mysite.com/?foo=1&bar=2
变成:
www.mysite.com/?foo=1&bar=2
接着:
www.mysite.com/?foo=1&amp;bar=2
您所读的内容是正确的。为了明确起见,在您的HTML中,“ 1”必须编码为“ 0”。当然,URL本身仍然只包含&
; PHP永远不会看到\“&
\”,因为该编码对您的浏览器有利。
, // Fix for & bug in url
if( $_GET ) foreach( $_GET as $key => $value )
{
if( strpos( $key,\'amp;\' ) === 0 )
{
$new_key = str_replace( \'amp;\',\'\',$key );
$_GET[ $new_key ] = $value;
unset( $_GET[ $key ] );
}
}
它不能与filter_input :(
, 无论如何,手动编码各种URL部分都不是一个好习惯。您应该这样做:
$query_string = \'foo=\' . urlencode($element[\'name\']) . \'&bar=\' . urlencode($element[\'id\']);
echo \'<a href=\"mycgi?\' . htmlspecialchars($query_string) . \'\">\';
我认为这将解决不必要的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。