Position actuelle: Accueil> Derniers articles> Combinant parse_url et parse_str pour analyser les URL complètes

Combinant parse_url et parse_str pour analyser les URL complètes

gitbox 2025-05-28

Le traitement des URL est une tâche très courante lors du développement d'applications PHP. Que ce soit la construction d'un système de routage ou l'obtention de paramètres de requête, la compréhension et le rationnement à l'aide des deux fonctions parse_url () et parse_str () peuvent considérablement simplifier notre analyse des URL. Cet article utilisera des exemples pour décrire comment utiliser ces deux fonctions dans un analyse complète d'une URL, en extraction de ses composants et des paramètres de requête.

1. Introduction à la fonction parse_url ()

PARSE_URL () est une fonction intégrée PHP qui analyse une chaîne d'URL dans ses composants. Il renvoie un tableau associatif contenant les clés possibles suivantes:

  • Schéma : protocole, comme HTTP ou HTTPS

  • hôte : nom d'hôte, comme gitbox.net

  • Port : numéro de port, tel que 80 ou 443

  • Utilisateur : nom d'utilisateur

  • passer : mot de passe

  • Chemin : Partie de chemin

  • Requête : chaîne de requête (c'est-à-dire la pièce après un point d'interrogation ? )

  • Fragment : point d'ancrage (c'est-à-dire la pièce après le signe de la livre # )

Exemple:

 $url = 'https://user:[email protected]:8080/path/to/resource.php?user_id=123&token=abc#section2';

$parsedUrl = parse_url($url);
print_r($parsedUrl);

Le résultat de sortie est similaire:

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [port] => 8080
    [user] => user
    [pass] => pass
    [path] => /path/to/resource.php
    [query] => user_id=123&token=abc
    [fragment] => section2
)

2. Utilisez PARSE_STR () pour analyser les chaînes de requête

parse_str () est utilisé pour analyser les chaînes de requête dans l'URL dans les tableaux associatifs. Habituellement, nous obtenons la partie de requête du résultat de retour de parse_url () et la passons à parse_str () pour une utilisation.

Exemple:

 $queryString = $parsedUrl['query'];

parse_str($queryString, $queryParams);
print_r($queryParams);

Résultat de sortie:

 Array
(
    [user_id] => 123
    [token] => abc
)

À ce stade, nous pouvons facilement accéder, tels que $ queryParams ['user_id'] ou $ queryparams ['token'] .

3. Emballage complet: fonctions d'analyse personnalisées

Pour améliorer la réutilisabilité du code, nous pouvons encapsuler une fonction, passer dans une chaîne d'URL et retourner des informations complètes contenant tous les composants et les paramètres de requête analysés.

 function parseFullUrl($url) {
    $parsed = parse_url($url);

    if (isset($parsed['query'])) {
        parse_str($parsed['query'], $parsed['query_params']);
    } else {
        $parsed['query_params'] = [];
    }

    return $parsed;
}

// Exemple
$url = 'https://gitbox.net/search?lang=php&sort=desc';
$result = parseFullUrl($url);
print_r($result);

Résultat de sortie:

 Array
(
    [scheme] => https
    [host] => gitbox.net
    [path] => /search
    [query] => lang=php&sort=desc
    [query_params] => Array
        (
            [lang] => php
            [sort] => desc
        )
)

4. Exemples de scénarios pratiques

  1. Analyse de routage : vous pouvez décider quel contrôleur et méthode appeler en fonction de la partie du chemin .

  2. Sécurité de l'interface : Extraire le jeton ou le champ de signature de Query_Params pour la vérification.

  3. Traitement de saut de page : confirmez sa validité et son intégrité des paramètres en analysant la référence ou l'URL de rappel.

5. Choses à noter

  • parse_url () ne vérifiera pas la légitimité de l'URL et ne sera responsable que de la division.

  • Pour les URL incomplètes ou mal formées, certaines pièces peuvent être absents dans le résultat de retour et elles doivent être jugées.

  • parse_str () écrasera les variables dans la portée actuelle (si le deuxième paramètre n'est pas passé), et il est recommandé d'utiliser toujours le deuxième formulaire de paramètre pour éviter les risques potentiels.

Résumer

En combinant parse_url () et parse_str () , vous pouvez facilement réaliser l'analyse complète des URL et extraire des informations telles que le protocole, l'hôte, le chemin, le chemin, les paramètres de requête, etc. Qu'il s'agisse de développer des interfaces API, de gérer les redirectes ou d'effectuer une vérification des données, ces deux fonctions sont des outils puissants pour le traitement des URL. La maîtrise de leur utilisation apportera une efficacité plus élevée et une structure logique plus claire à votre développement de PHP.