0

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 />";

問題のある正確な URL を返します:

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

2 に答える 2

1

ここに解決策があり、今回はうまくいきます

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

すべての文字セットをhtmlコードに変換します..ユーザー入力で定期的に使用している場合でも、これを完全に忘れていました...

于 2012-11-19T04:45:01.610 に答える
0

まず、文字列を作成します

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

そして、あなたはそれに追加しています。それで連結します。ここで、文字列の最後の部分が & で、パラメーターが region である場合があります。

どういうわけかそれは html ASCII コード ® に変換されます。これにより、登録されたシンボルが表示されます。

于 2012-11-19T04:29:33.113 に答える