2017-05-23 1 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) 

확인합니다.

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

그래서, 일부 서버는 HTML 엔티티로 &curren 치료 : 그러나 일부 서버는 나에게이 출력을 제공합니다. 그러나 나는 그것을 원하지 않는다.

HTML 엔터티가 원하지 않는 변환을 방지하려면 어떻게해야합니까?

+0

이 그냥 출력됩니다. 이 URL을 서버에 전달하면 모든 것이 정상입니다. –

+0

어떤 PHP 버전을 사용하고 있습니까? 다른 PHP 버전에서 http_build_query가 작동하는 방식에는 약간의 차이가 있습니다. – 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