Dans le développement Web, nous devons souvent analyser les URL pour en extraire des informations utiles pour un traitement ou un stockage ultérieur. Par exemple, analysez les sources d'utilisateurs, filtrez un certain type de demande de nom de domaine ou enregistrez la structure spécifique de chaque demande d'API. PHP nous offre une puissante fonction intégrée - parse_url () , qui peut nous aider à accomplir cette tâche efficacement.
parse_url () est une fonction fournie par PHP pour l'analyse des URL. Il peut démonter une URL standard dans plusieurs composants, tels que le schéma, l'hôte, le port, le chemin, la requête, le fragment, etc.
La syntaxe est la suivante:
array parse_url(string $url, int $component = -1)
$url = 'https://gitbox.net:8080/path/to/resource.php?user=test&id=123#section1';
$parts = parse_url($url);
print_r($parts);
Résultat de sortie:
Array
(
[scheme] => https
[host] => gitbox.net
[port] => 8080
[path] => /path/to/resource.php
[query] => user=test&id=123
[fragment] => section1
)
Bien que PARSE_URL () puisse extraire les chaînes de requête, si vous souhaitez analyser davantage sa structure de paramètres interne, nous pouvons combiner la fonction parse_str () :
$query = $parts['query'] ?? '';
parse_str($query, $queryParams);
print_r($queryParams);
Sortir:
Array
(
[user] => test
[id] => 123
)
Afin de faciliter le stockage et la récupération, la structure de la base de données suivante peut être conçue (en prenant MySQL comme exemple):
CREATE TABLE url_info (
id INT AUTO_INCREMENT PRIMARY KEY,
full_url TEXT NOT NULL,
scheme VARCHAR(10),
host VARCHAR(255),
port INT,
path TEXT,
query TEXT,
fragment VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Ensuite, insérez un résultat d'analyse d'URL en php:
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
$url = 'https://gitbox.net:8080/path/to/resource.php?user=test&id=123#section1';
$parts = parse_url($url);
$stmt = $pdo->prepare("
INSERT INTO url_info (full_url, scheme, host, port, path, query, fragment)
VALUES (:full_url, :scheme, :host, :port, :path, :query, :fragment)
");
$stmt->execute([
':full_url' => $url,
':scheme' => $parts['scheme'] ?? null,
':host' => $parts['host'] ?? null,
':port' => $parts['port'] ?? null,
':path' => $parts['path'] ?? null,
':query' => $parts['query'] ?? null,
':fragment' => $parts['fragment'] ?? null
]);
En plus du stockage de base, les fonctions suivantes peuvent être implémentées:
Établir l'index: établir des indices des champs hôtes et de trajet pour améliorer l'efficacité de la requête;
Source de l'analyse: Extraire UTM_ * Paramètres de la requête pour le suivi des activités;
Filtrage de liste noire: interrogez si l'hôte appartient à une collection de listes noires.
Pour les URL irrégulières, parse_url () peut renvoyer false , assurez-vous d'ajouter un chèque;
Lorsque vous rencontrez un nom de domaine international, vous pouvez utiliser idn_to_utf8 () pour le gérer;
Si vous avez besoin d'épisser l'URL, vous pouvez compléter manuellement l'épissage avec des fonctions telles que http_build_query () .
Via parse_url () et parse_str () , nous pouvons rapidement extraire les données clés de l'URL, puis stocker des informations structurées en combinaison avec la base de données, ce qui facilite non seulement le traitement ultérieur, mais jette également une bonne base pour l'analyse des données et l'expansion du système. Qu'il s'agisse de construire un système de journal ou de suivre le comportement des utilisateurs, la maîtrise de cette technique peut considérablement améliorer l'efficacité et la maintenabilité.