http_build_query関数:クエリ文字列を生成する

使い方

$query_string = http_build_query( $array );

Webサービスの開発ではクエリ文字列(QUERY_STRING)を生成する機会もままあるのではないでしょうか。
今回はそれを簡単に生成する関数のご紹介です。

クエリ文字列とは

クエリ文字列とは、HTTPのGETやPOST送信する際に、任意パラメータを送信する場合の形式です。(マルチパートは今回触れません)。
形式は下記のように各パラメータを「パラメータ名=パラメータ値」のように記述して、&で結合した文字列になります。
なお、各パラメータ名やパラメータ値はすべてURLエンコードしなければなりません

パラメータ名1=パラメータの値&パラメータ名1=パラメータの値&...

指定可能な引数

この関数は第1引数以外にも指定が可能です。特に第4引数はHTTP接続先のサーバーによっては受け取り方が異なる場合も稀にありますのでご注意ください。

説明
第1引数 配列 クエリ文字列に変換するパラメータの連想配列。
第2引数
(省略可)
文字列 第1引数の配列に添え字が含まれていた場合に、そのパラメータ名に付与する接頭辞。
第3引数
(省略可)
文字列 クエリ文字列のセパレータ(デフォルトはarg_separator.outputの設定値。つまり初期値は&)。
第4引数
(省略可)
定数 半角スペースのURLエンコード形式。
PHP_QUERY_RFC1738(デフォルト):半角スペースを+に変換。
PHP_QUERY_RFC3986:半角スペースを%20に変換。

サンプルプログラム

<?php

// 値はUTF-8の文字列
$data = array(
    'param1' => 'パラメータ1',
    'param2' => 'パラメータ2',
    'param3' => 'パラメータ3',
);

$query_string = http_build_query( $data );
echo $query_string.PHP_EOL;

実行結果

param1=%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%EF%BC%91&param2=%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%EF%BC%92&param3=%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%EF%BC%93

使いどころ

頻繁に使えるところがあるかというと、そうではないかもしれませんがURLのGETパラメータを組み立てるのは以外に手間がかかるかもしれません。
特に自前でパラメータを組み立てると、URLエンコードを忘れてしまってXSSの脆弱性を生んでしまうということもありますので、せっかくならばこの関数を使いましょう。

公式サイト

http://php.net/manual/ja/function.http-build-query.php

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>