使用& 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>\';
    

解决方法

        
&amp;
是ѭ1HTML的HTML实体参考。 URL参数仍然由单个“ 1”分隔,但是如果以HTML提及URL,则需要对其进行编码。对于
<img src=\"img?width=100&amp;height=100\" />
浏览器然后请求
img?width=100&height=100
。     ,        您必须在某处进行双重编码,以便您的链接:
www.mysite.com/?foo=1&bar=2
变成:
www.mysite.com/?foo=1&amp;bar=2
接着:
www.mysite.com/?foo=1&amp;amp;bar=2
您所读的内容是正确的。为了明确起见,在您的HTML中,“ 1”必须编码为“ 0”。当然,URL本身仍然只包含
&
; PHP永远不会看到\“
&amp;
\”,因为该编码对您的浏览器有利。     ,        
// Fix for &amp; 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) . \'\">\';
我认为这将解决不必要的问题。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...