PHP echo自动替换“&”用“&”

时间:2011-07-16 12:52:56

标签: php html echo ampersand

我正在创建一个将$ _GET数组转换为URL字符串格式的PHP函数。

e.g。 Array('key1'=>'value1', 'key2'=>'value2') 转换为:?key1=value1&key2=value2

我认为它正常运作的功能。但是,当我回显结果时,在HTML页面中,“&”的所有实例都被“&”替换。因此,浏览器中的转换最终为?key1=value1&key2=value2

这是我的PHP函数:

/**
 *
 * @param Array $GETArray Pass in the associative $_GET array here.
 * @return string The $GETArray converted into ?key=value&key2=value2&... form. 
 */
function strGET($GETArray) {
    if (sizeof($GETArray) < 1) {
        return '';
    }

    $firstkey = key($GETArray);
    $firstvalue = $GETArray[$firstkey];

    $sofar = "?$firstkey=$firstvalue";

    array_shift($GETArray);

    foreach ($GETArray as $key => $value) {
        $sofar .= '&'."$key=$value";
    }
    return $sofar;
}

2 个答案:

答案 0 :(得分:4)

回避您的问题,但请使用http_build_query。它正是如此。

此外,您的函数不会HTML转义任何东西。 PHP本身也不是。你必须在某个地方逃避它。 BTW,这是正确的。 Ampersands应该逃脱。

答案 1 :(得分:0)