2017-05-23 54 views
1

HTML實體防止轉換。避免HTML實體在http_build_query轉換在PHP

請看看下面的代碼:

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

var_dump(http_build_query($array)); 

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

好工作的。但是,一些服務器給我這樣的輸出:

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

所以,有些服務器對&curren爲HTML實體。但我不想那樣。

我怎樣才能避免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