2017-05-23 18 views
1

HTMLエンティティの変換を防止します。PHPのhttp_build_queryでHTMLエンティティの変換を回避する

以下のコードを見てください:作品

$array = array(
    "id" => 123456, 
    "currency" => "EUR", 
); 

var_dump(http_build_query($array)); 

//OUTPUT: 
string 'id=123456&currency=EUR' (length=22) 

[OK]を。

string(25) "pspid=123456¤cy=EUR" 

だから、いくつかのサーバがHTMLのエンティティとして扱う&curren:しかし、いくつかのサーバーは、私にこの出力を与えます。しかし私はそれを望んでいません。

HTMLエンティティの不要な変換を避けるにはどうすればよいですか?

+0

これは単に出力されます。このURLをサーバーに渡すとすべて正常になります –

+0

あなたはどのPHPバージョンを使用していますか? http_build_queryが異なるPHPバージョンで動作する方法にはいくつかの違いがあります。 – lloiacono

+0

@u_mulderはい、なぜ&currenはエンティティに変換され、他のサーバでは変換されませんか? – Julian

答えて

0

解決策は簡単です。 htmlentitiesを出力に使用するだけです。

ini_set("display_errors", 1); 
$array = array(
    "id" => 123456, 
    "currency" => "EUR", 
); 
print_r(http_build_query($array)); 
echo PHP_EOL; 
print_r(htmlentities(http_build_query($array))); 

//OUTPUT: 
id=123456&currency=EUR 
id=123456&currency=EUR 

リンク: https://eval.in/803318

0

PHPのバージョンを確認したのは:

PHP 5.3.1(バギー行動)http_build_queryパラメータに参加する '&' アンパサンド文字をエスケープありません。例:user_id = 1 & setting_id = 2

PHP 5.4+ http_build_queryパラメータを結合する '&'のアンパサンド文字をエスケープしません。例:user_idの詳細について= 1 & setting_id = 2

はここをチェック:https://stackoverflow.com/a/42317655/1016425

関連する問題