2011-07-16 8 views
2

は、私がURL文字列の形式に$ _GETの配列を変換し、PHPの関数を作ってるんだと置き換えPHPは自動的にエコー「&」..「&」が

例えばArray('key1'=>'value1', 'key2'=>'value2') は次のように変換されます。?key1=value1&key2=value2

正しく機能していると思います。しかし、結果をエコーすると、HTMLページで "&"のすべてのインスタンスが "&"に置き換えられます。したがって、ブラウザの変換は?key1=value1&key2=value2になります。

あなたの質問をSidestepping
/** 
* 
* @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; 
} 
+1

私は見る機能が必要だと思います。基本的に明示的に指示されない限り、PHPはテキストを自動的にフォーマットするべきではありません。 – casraf

+0

ありがとう、私は質問に自分の関数のコードを追加しました。 – meltuhamy

+1

アンパサンドは、マークアップで「&」にする必要があります。それを変えるのは間違いでしょう。 – Gordon

答えて

4

が、http_build_queryを使用します。

ここに私のPHP関数です。それはまさにそのことです。

また、あなたの関数は何もHTMLエスケープしません。 PHP自体はどちらもしません。あなたはどこかでそれをエスケープする必要があります。どちらが正しいですか?アンパルサンドはエスケープする必要があります。

+0

ありがとう、それはPHPがあなたのための多くの関数を書いていることを見つけることは常に良いです:P ..しかし、私の問題に戻って、それは実際には問題ではなかった!私が笑を使っていたのはコードインスペクタでした。興味があれば上記の質問のコメントを参照してください。 – meltuhamy