In der Webentwicklung müssen wir häufig URLs analysieren, um nützliche Informationen aus ihnen für die weitere Verarbeitung oder Speicherung zu extrahieren. Analysieren Sie beispielsweise Benutzerquellen, filtern Sie eine bestimmte Art von Domänennamenanforderung oder zeichnen Sie die spezifische Struktur jeder API -Anforderung auf. PHP bietet uns eine leistungsstarke integrierte Funktion - Parse_url () , die uns helfen kann, diese Aufgabe effizient zu erledigen.
Parse_url () ist eine Funktion, die von PHP zum Parsen von URLs bereitgestellt wird. Es kann eine Standard -URL in mehrere Komponenten wie Schema, Host, Port, Pfad, Abfrage, Fragment usw. zerlegen, usw.
Die Syntax ist wie folgt:
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);
Ausgangsergebnis:
Array
(
[scheme] => https
[host] => gitbox.net
[port] => 8080
[path] => /path/to/resource.php
[query] => user=test&id=123
[fragment] => section1
)
Obwohl Parse_url () Abfragesträge extrahieren kann, können wir die Funktion PARSE_STR () kombinieren, wenn Sie seine interne Parameterstruktur weiter analysieren möchten:
$query = $parts['query'] ?? '';
parse_str($query, $queryParams);
print_r($queryParams);
Ausgabe:
Array
(
[user] => test
[id] => 123
)
Um Speicher und Abruf zu erleichtern, kann die folgende Datenbankstruktur gestaltet werden (als Beispiel nehmen Sie MySQL):
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
);
Fügen Sie als Nächstes ein URL -Parsing -Ergebnis in PHP ein:
$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
]);
Zusätzlich zum grundlegenden Speicher können die folgenden Funktionen implementiert werden:
Index festlegen: Festlegen von Host- und Path -Feldern, um die Effizienz der Abfrage zu verbessern;
Analysequelle: Extrahieren Sie UTM_* -Parameter aus der Abfrage für die Aktivitätsverfolgung;
Blacklist Filtering: Fragen Sie, ob Host zu einer Blacklist -Sammlung gehört.
Bei unregelmäßigen URLs kann Parse_url () false zurückgeben, addieren Sie unbedingt einen Scheck.
Bei der Begegnung auf einen internationalen Domain -Namen können Sie idn_to_utf8 () verwenden, um ihn zu handhaben.
Wenn Sie die URL umkehren müssen, können Sie das Spleißen mit Funktionen wie http_build_query () manuell vervollständigen.
Durch Parse_url () und Parse_str () können wir schnell Schlüsseldaten aus der URL extrahieren und dann strukturierte Informationen in Kombination mit der Datenbank speichern, was nicht nur die nachfolgende Verarbeitung erleichtert, sondern auch eine gute Grundlage für die Datenanalyse und die Systemexpansion legt. Unabhängig davon, ob ein Protokollsystem erstellt oder das Benutzerverhalten verfolgt wird, diese Technik die Effizienz und Wartbarkeit erheblich verbessern kann.