PHPでクエリ文字列をマスターする5つのステップ

PHPでクエリ文字列を使用するステップバイステップの解説図PHP
この記事は約7分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

PHPでクエリ文字列を使いこなすことで、データをより効果的に操作することが可能になります。

この記事では、PHPでクエリ文字列をマスターするための5つのステップを紹介します。

実用的なサンプルコードを交えて、基本的な作成方法から使い方、注意点、カスタマイズ方法まで、PHPでクエリ文字列を扱う全てを学ぶことができます。

●PHPとクエリ文字列の基本

○クエリ文字列とは

クエリ文字列は、URLの末尾に付けられるパラメータのことを指します。

一般的には「?」の後に「キー=値」の形式で記述されます。

このクエリ文字列を用いて、ウェブページに追加情報を渡すことが可能です。

○PHPでのクエリ文字列の使用

PHPでは、$_GETスーパーグローバル変数を使用してクエリ文字列にアクセスします。

例えば、URLが「example.com?page=2」の場合、$_GET[‘page’]とすることで「2」を取得することができます。

●PHPでクエリ文字列を作る方法

○サンプルコード1:基本的なクエリ文字列の作成

<?php
// クエリ文字列の配列を作成
$data = array(
  'page' => '2',
  'sort' => 'date'
);

// http_build_query関数を使用してクエリ文字列を作成
$query_string = http_build_query($data);

echo $query_string;
?>

このサンプルコードでは、http_build_query関数を使ってクエリ文字列を作成しています。

この例では’page’と’sort’という2つのパラメータを持つクエリ文字列を作成しています。

実行結果: “page=2&sort=date”

○サンプルコード2:複数のパラメータを持つクエリ文字列の作成

<?php
// クエリ文字列の配列を作成
$data = array(
  'search' => 'php query string',
  'page' => '2',
  'sort' => 'date',
  'category' => 'programming'
);

// http_build_query関数を使用してクエリ文字列を作成
$query_string = http_build_query($data);

echo $query_string;
?>

このサンプルコードでは、4つのパラメータを持つクエリ文字列を作成しています。

具体的には’search’, ‘page’, ‘sort’, ‘category’の4つのキーを持つクエリ文字列を作成しています。

実行結果:”search=php+query+string&page=2&sort=date&category=programming”

●クエリ文字列の使い方と応用例

○サンプルコード3:クエリ文字列を用いたデータフィルタリング

<?php
// サンプルデータ
$products = array(
  array('id' => 1, 'category' => 'books', 'price' => 1000),
  array('id' => 2, 'category' => 'books', 'price' => 1500),
  array('id' => 3, 'category' => 'cds', 'price' => 2000),
);

// クエリ文字列からカテゴリを取得
$category = $_GET['category'];

// フィルタリング
$filtered_products = array_filter($products, function ($product) use ($category) {
  return $product['category'] == $category;
});

print_r($filtered_products);
?>

このサンプルコードでは、クエリ文字列を用いてデータをフィルタリングしています。

この例では、カテゴリに基づいて商品データをフィルタリングしています。

実行結果は、例えばURLが「example.com?category=books」であれば次のようになります。

Array
(
    [0] => Array
        (
            [id] => 1
            [category] => books
            [price] => 1000
        )

    [1] => Array
        (
            [id] => 2
            [category] => books
            [price] => 1500
        )
)

○サンプルコード4:クエリ文字列を用いたページネーション

<?php
// サンプルデータ
$products = array(
  // 50個の商品データがあるとします
);

// クエリ文字列からページ番号を取得
$page = isset($_GET['page']) ? $_GET['page'] : 1;

// 1ページあたりの表示数
$per_page = 10;

// ページネーションの開始位置を計算
$start = ($page - 1) * $per_page;

// 配列をスライスして表示するデータを取得
$display_products = array_slice($products, $start, $per_page);

print_r($display_products);
?>

このサンプルコードでは、クエリ文字列を用いてページネーションを実装しています。

この例では、ページ番号に基づいて商品データを表示しています。

URLが「example.com?page=2」であれば、商品データの11番目から20番目までが表示されます。

●クエリ文字列の注意点と対策

○サンプルコード5:エスケープ処理を用いたセキュリティ対策

<?php
// クエリ文字列から取得したデータはエスケープする
$search_term = htmlspecialchars($_GET['search'], ENT_QUOTES, 'UTF-

8');

echo "検索キーワード:{$search_term}";
?>

このコードでは、htmlspecialchars関数を使ってクエリ文字列から取得したデータをエスケープしています。

この例では、検索キーワードをエスケープして出力しています。

例えば、URLが「example.com?search=」であれば、出力される検索キーワードは「<script>alert(‘xss’)</script>」となり、ブラウザでは「」と表示されます。

このようにエスケープ処理を施すことで、クロスサイトスクリプティング(XSS)といったセキュリティ上の脅威から守ることができます。

●クエリ文字列のカスタマイズ

○サンプルコード6:カスタムクエリ文字列の作成

<?php
// パラメータの配列
$params = array(
  'category' => 'books',
  'sort' => 'price_asc',
  'per_page' => 20,
  'page' => 1,
);

// http_build_query関数でクエリ文字列を生成
$query = http_build_query($params);

echo $query;  // "category=books&sort=price_asc&per_page=20&page=1"
?>

このコードでは、http_build_query関数を用いてパラメータの配列からクエリ文字列を生成しています。

この例では、各種設定値をパラメータとしてクエリ文字列を生成して出力しています。

上記のコードを実行すると、出力結果は「category=books&sort=price_asc&per_page=20&page=1」となります。

このように、任意のパラメータを指定して自由にクエリ文字列を生成することができます。

まとめ

以上、PHPでクエリ文字列を効果的に使用する方法を5つのステップに分けて解説してきました。

基本的なクエリ文字列の作成から始め、フィルタリングやページネーションなどの応用例、そしてセキュリティ対策やカスタマイズ方法まで、様々な角度からクエリ文字列の使用方法を学んできました。

クエリ文字列は、データのフィルタリングやページ遷移など、ウェブアプリケーション開発において重要な役割を果たします。

今回学んだ知識を活かし、より効率的で安全なウェブアプリケーション開発に取り組んでみてください。