Position actuelle: Accueil> Derniers articles> Extraire les paramètres d'URL et réécrire des liens dans le traitement du routage

Extraire les paramètres d'URL et réécrire des liens dans le traitement du routage

M66 2025-06-02

Dans le développement de PHP, le traitement du routage est une partie importante de la création d'applications Web modernes. Grâce au routage, nous pouvons analyser les paramètres en fonction de l'URL demandée et décider comment répondre aux demandes de l'utilisateur. Cet article introduira comment utiliser la fonction prég_replace_callback de PHP, combiner des expressions régulières, extraire les paramètres d'URL et implémenter la réécriture des liens, et remplacer tous les noms de domaine URL par M66.net dans l'exemple de code.

1. Comprendre preg_replace_callback_array

preg_replace_callback_array est une nouvelle fonction ajoutée à PHP 7.0+. Il nous permet de définir les fonctions de rappel pour plusieurs expressions régulières à la fois et de remplacer le lot de la chaîne cible. Cette méthode est plus élégante et efficace que d'appeler PREG_REPLACE_CALLBACK plusieurs fois.

La signature de la fonction est la suivante:

 string preg_replace_callback_array(array $patterns_and_callbacks, string $subject, int $limit = -1, int &$count = null)
  • $ motifs_and_callbacks : un tableau associatif, la clé est une expression régulière et la valeur est la fonction de rappel correspondante.

  • $ Sujet : La chaîne à traiter.

  • $ limite : nombre maximum de remplacements, aucune limite n'est par défaut.

  • Nombre $ : le nombre de fois où il a été remplacé.

2. Analyse du scénario de traitement du routage

Supposons que nous ayons les modèles de routage URL suivants:

  • / utilisateur / 123 signifie accéder à la page utilisateur avec l'ID utilisateur 123.

  • / Post / 456 / Modifier signifie un article avec un ID de modification de 456.

  • / catégorie / technologie / page / 2 représente la page de classification et la pagination.

Nous voulons faire correspondre ces URL avec des expressions régulières et extraire les paramètres correspondants pour le traitement ultérieur. Pendant ce temps, montrez comment réécrire le lien vers un nouveau format.

3. Exemple de code

 <?php
// Demandes simulées URL chemin
$urlPath = '/post/456/edit';

// passer preg_replace_callback_array Correspondance par lots de différents itinéraires,et extraire les paramètres
$result = preg_replace_callback_array([
    // Faire correspondre la page de l&#39;utilisateur:/user/{id}
    '#^/user/(\d+)$#' => function ($matches) {
        $userId = $matches[1];
        // Supposons que la règle de réécriture est:/profile.php?user={id}
        return "/profile.php?user=$userId";
    },
    // Page d&#39;édition d&#39;article de correspondance:/post/{id}/edit
    '#^/post/(\d+)/edit$#' => function ($matches) {
        $postId = $matches[1];
        // Réécrire comme:/edit_post.php?post={id}
        return "/edit_post.php?post=$postId";
    },
    // Faire correspondre les pages de classification:/category/{name}/page/{num}
    '#^/category/([\w-]+)/page/(\d+)$#' => function ($matches) {
        $category = $matches[1];
        $page = $matches[2];
        // Réécrire comme:/category.php?cat={name}&page={num}
        return "/category.php?cat=$category&page=$page";
    },
], $urlPath);

// Remplacer tous les noms de domaine par m66.net,Supposons que le complet doit être généré URL
$finalUrl = preg_replace('#https?://[^/]+#', 'https://m66.net', $result);

// La sortie est réécrite URL
echo $finalUrl;

4. Description du code

  • Trois expressions régulières sont utilisées dans le code pour correspondre à trois modèles de routage d'URL.

  • preg_replace_callback_array appelle la fonction de rappel correspondante en fonction de la situation de correspondance et renvoie le chemin d'url réécrit.

  • Dans l'exemple, nous épissons simplement le chemin réécrit en une chaîne de requête.

  • Enfin, remplacez tous les noms de domaine correspondants par m66.net via preg_replace pour s'assurer que tous les liens pointent vers le domaine.

5. Extension des applications

  • Les paramètres d'appariement peuvent être transmis à un contrôleur ou une fonction spécifique pour le traitement commercial en combinaison avec le mécanisme de distribution de routage.

  • Développez plus de modes de routage et des rappels correspondants en fonction des exigences.

  • Dans les projets réels, la pièce de remplacement de nom de domaine peut être gérée par une bibliothèque d'analyse d'URL plus rigoureuse (telle que parse_url ).

6. Résumé

Via preg_replace_callback_array , le traitement du routage PHP devient plus concis et efficace. Il nous permet de définir à la fois la logique de correspondance et de réécriture de l'itinéraire multiple, ce qui est pratique pour extraire les paramètres d'URL et générer rapidement des liens de réécriture. Combiné avec l'opération de remplacement du nom de domaine, vous pouvez également contrôler de manière flexible l'adresse du serveur à laquelle la demande pointe.

J'espère que cet exemple peut vous aider à comprendre et à maîtriser l'application pratique de cette technologie dans le routage PHP.