2017-05-23 1 views
1

Verhindern Sie die Konvertierung von HTML-Entitäten.Vermeiden der Konvertierung von HTML-Entitäten in http_build_query in PHP

Bitte schauen Sie auf den folgenden Code:

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

var_dump(http_build_query($array)); 

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

Ok, das funktioniert. Aber einige Server geben Sie mir diese Ausgabe:

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

Also, einige Server behandeln &curren als HTML-Einheit. Aber das will ich nicht.

Wie kann ich die unerwünschte Konvertierung von HTML-Entitäten vermeiden?

+0

Diese gerade ausgegeben wird. Wenn Sie diese URL an Server übergeben - alles wird in Ordnung sein –

+0

Welche PHP-Version verwenden Sie? Es gibt ein paar Unterschiede, wie http_build_query in verschiedenen PHP-Versionen funktioniert. – lloiacono

+0

@u_mulder Ja, aber warum wird '& curren' in Entitäten umgewandelt und auf anderen Servern wird es nicht konvertiert? – Julian

Antwort

0

Die Lösung ist einfach. Verwenden Sie einfach htmlentities am Ausgang.

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 

-Link: https://eval.in/803318

0

Überprüfen Sie Ihre PHP-Version seit:

PHP 5.3.1 (Buggy Verhalten) http_build_query DOES die '&' Zeichen-Zeichen zu entkommen, die die Parameter verbindet. Beispiel: user_id = 1 & setting_id = 2.

PHP 5.4+ http_build_query WIRD NICHT entkommen das "&" Und-Zeichen, das die Parameter verbindet. Beispiel: user_id = 1 & setting_id = 2

Für weitere Details hier überprüfen: https://stackoverflow.com/a/42317655/1016425

Verwandte Themen