現在の位置: ホーム> 最新記事一覧> URLパラメーターを抽出し、ルーティング処理でリンクを書き直します

URLパラメーターを抽出し、ルーティング処理でリンクを書き直します

M66 2025-06-02

PHP開発では、ルーティング処理は最新のWebアプリケーションの構築の重要な部分です。ルーティングを通じて、要求されたURLに基​​づいてパラメーターを解析し、ユーザー要求に応答する方法を決定できます。この記事では、PHPのPREG_REPLACE_CALLBACK_ARRAY関数の使用方法を紹介し、正規表現を組み合わせ、URLパラメーターを抽出し、リンク書き換えを実装し、すべてのURLドメイン名をサンプルコードでM66.NETに置き換えます。

1. preg_replace_callback_arrayを理解します

preg_replace_callback_arrayは、php 7.0+に追加された新しい関数です。複数の正規表現のコールバック関数を一度に定義し、ターゲット文字列をバッチに置き換えることができます。この方法は、 preg_replace_callbackを複数回呼び出すよりもエレガントで効率的です。

関数の署名は次のとおりです。

 string preg_replace_callback_array(array $patterns_and_callbacks, string $subject, int $limit = -1, int &$count = null)
  • $ patterns_and_callbacks :連想配列、キーは正規表現であり、値は対応するコールバック関数です。

  • $件名:処理する文字列。

  • $制限:交換の最大数、制限はデフォルトではありません。

  • $ count :交換された回数。

2。ルーティング処理シナリオ分析

次のURLルーティングパターンがあるとします。

  • /user/123は、ユーザーID 123でユーザーページにアクセスすることを意味します。

  • /post/456/編集とは、編集IDが456の記事を意味します。

  • /カテゴリ/テクノロジー/ページ/2は、分類ページとページネーションを表します。

これらのURLを正規表現と一致させ、後続の処理のために対応するパラメーターを抽出したいと考えています。一方、リンクを新しい形式に書き換える方法を示します。

3。サンプルコード

<?php
// シミュレートされたリクエスト URL パス
$urlPath = '/post/456/edit';

// 合格 preg_replace_callback_array さまざまなルートのバッチマッチング,パラメーターを抽出します
$result = preg_replace_callback_array([
    // ユーザーページを一致させます:/user/{id}
    '#^/user/(\d+)$#' => function ($matches) {
        $userId = $matches[1];
        // 書き換えルールがあると仮定します:/profile.php?user={id}
        return "/profile.php?user=$userId";
    },
    // 記事編集ページを一致させます:/post/{id}/edit
    '#^/post/(\d+)/edit$#' => function ($matches) {
        $postId = $matches[1];
        // ASを書き直します:/edit_post.php?post={id}
        return "/edit_post.php?post=$postId";
    },
    // 分類ページを一致させます:/category/{name}/page/{num}
    '#^/category/([\w-]+)/page/(\d+)$#' => function ($matches) {
        $category = $matches[1];
        $page = $matches[2];
        // ASを書き直します:/category.php?cat={name}&page={num}
        return "/category.php?cat=$category&page=$page";
    },
], $urlPath);

// すべてのドメイン名を置き換えます m66.net,完全なものを生成する必要があると仮定します URL
$finalUrl = preg_replace('#https?://[^/]+#', 'https://m66.net', $result);

// 出力が書き直されます URL
echo $finalUrl;

4。コードの説明

  • コードでは、3つのURLルーティングパターンに対応するために、コードで3つの正規表現が使用されています。

  • preg_replace_callback_arrayは、一致する状況に応じて対応するコールバック関数を呼び出し、書き換えられたURLパスを返します。

  • この例では、書き換えられたパスをクエリ文字列にスプライスするだけです。

  • 最後に、すべての一致するドメイン名をpreg_replaceを介してm66.netに置き換えて、すべてのリンクがドメインを指していることを確認します。

5。アプリケーションの拡張

  • 一致するパラメーターは、ルーティング配信メカニズムと組み合わせてビジネス処理のために特定のコントローラーまたは機能に渡すことができます。

  • 要件に応じて、より多くのルーティングモードと対応するコールバックを拡張します。

  • 実際のプロジェクトでは、ドメイン名の交換部品は、より厳密なURL解析ライブラリ( Parse_urlなど)で処理できます。

6。概要

preg_replace_callback_arrayを通じて、PHPルーティング処理はより簡潔で効率的になります。これにより、複数のルートマッチングを定義し、ロジックを一度に書き換えることができます。これは、URLパラメーターを抽出し、リンクを迅速に生成するのに便利です。ドメイン名の交換操作と組み合わせることで、要求ポイントがあるサーバーアドレスを柔軟に制御することもできます。

うまくいけば、この例がPHPルーティングでこのテクノロジーの実用化を理解し、習得するのに役立つことを願っています。