やりたいこと
FuelPHPにて、Web上で公開されているAPIのデータを取得しようとしています。
コントローラにて次のような処理を書いたのですが、(★)のhttp_build_query($params)
にて、$params['cdCat02']
に含まれる「%2C」(カンマ)が「%252C」にエンコードされてしまいます。
php
1//リクエストURL 2$request_url = 'https://api.e-stat.go.jp/rest/3.0/app/json/getStatsData'; 3 4//リクエストパラメータ 5$params = array( 6 'cdArea' => '01100', 7 'cdCat02' => '1530%2C1540%2C1550', 8 'appId' => '***', 9); 10 11//リクエストURLにパラメータを追記(★) 12$request_url .= '?'.http_build_query($params); 13 14// cURLを使ってリクエスト 15$curl = curl_init(); 16curl_setopt($curl, CURLOPT_URL , $request_url); 17$res = curl_exec($curl);
http_build_query($params)
を使わずに、パラメータ群を含めたリクエストURLをベタ書きしても良いのですが、できればパラメータ群は配列にしてコードをみやすくしたいです。
質問
http_build_query($params)
にて、「%2C」がそのまま出力される方法はないでしょうか?
環境
- FuelPHP 1.8.2
- php 5.6
試したこと
http_build_queryのマニュアルによると、第4引数のenc_type
に PHP_QUERY_RFC1738 や PHP_QUERY_RFC3986 が指定できるようです。
そこで、次のようなコントローラを書いて echo してみましたが、いずれも「%252C」にエンコードされていました。
php
1class Controller_Home extends Controller 2{ 3 public function action_test() 4 { 5 $params = array('test' => '%2C'); 6 echo http_build_query($params, '', '', PHP_QUERY_RFC3986); 7 echo http_build_query($params, '', '', PHP_QUERY_RFC1738); 8 } 9}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/29 11:26