Dans le développement de PHP, nous devons souvent traiter les URL, tels que l'extraction des noms de domaine, des chemins, des paramètres de requête et d'autres informations à partir d'une adresse complète. parse_url () est une fonction très pratique fournie par PHP, qui peut nous aider à effectuer ces opérations rapidement et avec précision. Cependant, de nombreux développeurs ne comprennent pas la signification de chaque champ renvoyé par la fonction, ce qui conduit à des malentendus ou à des erreurs dans une utilisation réelle. Cet article analyse systématiquement le résultat de retour de parse_url () pour vous aider à vraiment maîtriser son utilisation.
La définition de la fonction de parse_url () est la suivante:
mixed parse_url(string $url, int $component = -1)
Il reçoit une chaîne d'URL en entrée et renvoie un tableau associatif contenant les différents composants de l'URL. Le deuxième paramètre $ composant est facultatif. Si ce paramètre est spécifié, la fonction ne renvoie que la valeur de la partie correspondante de l'URL.
Regardons d'abord l'exemple le plus simple:
$url = 'https://user:[email protected]:8080/path/to/page.php?query=123#section';
$parsed = parse_url($url);
print_r($parsed);
Le résultat de sortie est le suivant:
Array
(
[scheme] => https
[host] => gitbox.net
[port] => 8080
[user] => user
[pass] => pass
[path] => /path/to/page.php
[query] => query=123
[fragment] => section
)
A analyser le sens de chaque champ dans ce tableau un par un:
Il s'agit de la partie protocole de l'URL, comme HTTP , HTTPS , FTP , etc. Dans les exemples sont:
[scheme] => https
Indique que l'URL utilise le protocole HTTPS.
Autrement dit, le nom d'hôte, généralement le nom de domaine ou l'adresse IP. Dans notre exemple:
[host] => gitbox.net
Il s'agit exactement de l'adresse du serveur auxquelles nous voulons accéder.
Il s'agit du numéro de port de la connexion. Si le port n'est pas explicitement spécifié dans l'URL, le champ n'apparaîtra pas dans le résultat. Par exemple, le port HTTP par défaut est 80 et HTTPS est 443; Il sera analysé à moins que vous n'utilisiez un port non défaut.
[port] => 8080
Cela montre que nous avons accédé via le port 8080.
Ces deux champs représentent le nom d'utilisateur et le mot de passe utilisé pour l'authentification de base. Ils apparaissent généralement dans des URL comme https: // utilisateur: pass @ hôte . Dans l'exemple:
[user] => user
[pass] => pass
Veuillez noter: il n'est pas recommandé de transférer le nom d'utilisateur et le mot de passe dans le texte brut URL dans des environnements de production réels.
Il s'agit de la partie de chemin de la ressource dans l'URL, comme le chemin d'accès à une page ou une interface du site Web:
[path] => /path/to/page.php
Ce champ est souvent utilisé dans le routage, le contrôle d'autorisation ou l'accès aux ressources statiques.
Autrement dit, la partie de la chaîne de requête après le point d'interrogation, qui est généralement utilisée pour transmettre les paramètres:
[query] => query=123
Notez que la chaîne d'origine qui n'est pas analysée ici est retournée. Si un traitement supplémentaire est nécessaire, vous pouvez utiliser la fonction parse_str () pour le convertir en un tableau:
parse_str($parsed['query'], $queryParams);
print_r($queryParams);
Sortir:
Array
(
[query] => 123
)
Il s'agit de la partie ancre de l'URL, c'est-à-dire le contenu après # , qui est généralement utilisé pour sauter dans la page:
[fragment] => section
Il n'est pas envoyé au serveur par le navigateur et est principalement utilisé pour le contrôle de la page client.
Si vous êtes uniquement intéressé par un certain champ dans l'URL, vous pouvez utiliser le deuxième paramètre pour spécifier la constante de champ, par exemple:
$host = parse_url($url, PHP_URL_HOST);
echo $host; // Sortir:gitbox.net
Les constantes disponibles comprennent:
Php_url_scheme
Php_url_host
Php_url_port
Php_url_user
Php_url_pass
Php_url_path
Php_url_query
Php_url_fragment
URL incomplète : parse_url () ne nécessite pas que l'URL entrante soit complète. Il peut également gérer des adresses relatives comme /path/to/page.php?query=123 , mais les champs correspondants peuvent être manquants.
La valeur de retour est fausse : lorsque la chaîne passée ne peut pas être analysée dans une URL valide, la fonction renvoie fausse et que l'attention doit être accordée à la tolérance aux défauts.
Nom de domaine Unicode : Pour les URL contenant des caractères chinois ou d'autres Unicode, il est recommandé d'utiliser idn_to_ascii () pour la conversion de codage d'abord.
parse_url () est un outil indispensable en PHP pour le traitement des URL. Comprendre la signification de chaque champ qu'il renvoie peut vous aider à effectuer plus efficacement les tâches de développement liées à l'URL. Il peut jouer un rôle important, qu'il s'agisse d'écriture d'un système de routage, de traitement des liens de saut ou d'exécution de l'analyse des demandes d'API. N'oubliez pas: en correspondant raisonnablement à parse_url () et parse_str () , vous pouvez facilement "démonter" n'importe quelle URL.