PHP URL参数追加返回特殊字符

时间:2012-11-19 04:23:04

标签: php special-characters urlencode

我正在编写一个函数来构建一个URL,这里是:

public static function requestContent($p_lParameters)
{
    $sParameters = "?key=TEST&format=json&jsoncallback=none";

    foreach($p_lParameters as $sParameterName => $sParameterValue)
    {
        $sParameters .= "&$sParameterName=$sParameterValue";
    }

    echo "<span style='font-size: 16px;'>URL : http://api.oodle.com/api/v2/listings" . $sParameters . "</span><br />";

    $aXMLData = file_get_contents("http://api.oodle.com/api/v2/listings" . $sParameters);

    return json_decode($aXMLData,true);
}

我用这个数组列表调用这个函数:

print_r() result : Array ( [region] => canada [category] => housing/sale/home )

但是这很奇怪我得到了一个意外的角色(请注意特殊字符none **®** ion):

http://api.oodle.com/api/v2/listings?key=TEST&format=json&jsoncallback=none®ion=canada&category=housing/sale/home

有关信息,我使用此标题:

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<?php header('Content-Type: text/html;charset=UTF-8'); ?>

编辑:

$sRequest = "http://api.oodle.com/api/v2/listings?key=TEST&format=json&jsoncallback=none&region=canada&category=housing/sale/home";

echo "<span style='font-size: 16px;'>URL : " . $sRequest . "</span><br />";

返回包含问题的确切网址:

http://api.oodle.com/api/v2/listings?key=TEST&format=json&jsoncallback=none®ion=canada&category=housing/sale/home

2 个答案:

答案 0 :(得分:1)

这是解决方案,这次它将起作用

$sParameters .= "&$sParameterName=$sParameterValue";
$sParameters = htmlentities($sParameters);

它将所有字符集转换为html代码..即使我在用户输入中经常使用它,也完全忘记了这一点......

答案 1 :(得分:0)

好吧,首先你要构​​建一个字符串

$sParameters = "?key=TEST&format=json&jsoncallback=none";

然后你追加。所以它会连接起来。 现在,字符串的最后一部分可能是&amp;你的参数是区域。

以某种方式转换为html ASCII码&amp; reg;这会导致注册的符号出现。