Web - URI
ナビゲーションに移動
検索に移動
概要
クエリパラメータ
クエリパラメータを含めた文字列全体はURLである。
例: https://example.com/search.php?keyword=太郎&page=2&sort=desc#section1
上記のURLは以下のような構造に分解できる。
これら全ての要素を含めて、1つのURLとして扱う。
- スキーム (プロトコル)
- https://
- ホスト名
- example.com
- パス
- /search.php
- クエリ文字列
- ?keyword=太郎&page=2&sort=desc
- フラグメント識別子
- #section1
※注意
クエリパラメータを含む完全なURL文字列は、以下に示すような特徴があることに注意する。
ただし、セキュリティ上の理由から、パスワード等の機密情報をURLのクエリパラメータに含めることは避けるべきである。
- 有効なURLとして扱われる。
- プログラムで解析可能。
- Webブラウザで正しく解釈される。
- 文字エンコーディング
// 日本語等の場合はURLエンコードが必要 $encodedKeyword = urlencode("太郎"); $url = "https://example.com/search.php?keyword=" . $encodedKeyword;
- 複数パラメータの結合
// クエリパラメータは、&で連結 $params = [ 'keyword' => '太郎', 'page' => 2, 'sort' => 'desc' ]; $queryString = http_build_query($params); $url = "https://example.com/search.php?" . $queryString;
- 最大長の制限
- Webブラウザによって異なるが、通常2,000〜8,000文字程度
- 長すぎるクエリは、POSTメソッドを使用する。
- PHPでの取り扱い例
// URLの解析 $url = "https://example.com/search.php?keyword=太郎&page=2"; $parsedUrl = parse_url($url); print_r($parsedUrl); // 出力 Array ( [scheme] => https [host] => example.com [path] => /search.php [query] => keyword=太郎&page=2 )
- クエリ文字列の解析
parse_str($parsedUrl['query'], $queryParams); print_r($queryParams); // 出力 Array ( [keyword] => 太郎 [page] => 2 )