2

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

例如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;
}
4

2 回答 2

4

回避你的问题,但使用http_build_query. 它正是这样做的。

此外,您的函数不会对任何内容进行 HTML 转义。PHP 本身也没有。你一定是在某处逃离它。顺便说一句,这是正确的。& 符号应该被转义。

于 2011-07-16T12:57:48.007 回答
0

请改用http://us.php.net/manual/en/function.http-build-query.php函数。

于 2011-07-16T12:59:51.813 回答