In der täglichen Entwicklung müssen wir häufig die URL analysieren, um bestimmte Teile davon zu extrahieren, wie Protokoll, Hostname, Pfad oder Abfrageparameter. In einigen Szenarien kümmern wir uns möglicherweise nur um den "Dateinamen", der im Pfadteil in der URL enthalten ist, z. B. den Bildnamen, den Dokumentnamen usw. in der Ressourcenadresse.
In PHP können wir die integrierte Parse_url -Funktion verwenden, um die URL in verschiedene Teile zu unterteilen und dann die Basisname- Funktion zu kombinieren, um den gewünschten Dateinamen aus dem Pfad zu extrahieren. In diesem Artikel wird erläutert, wie dieser Prozess in Kombination mit Beispielen implementiert wird.
Parse_url ist eine Funktion, die von PHP zum Parsen von URLs bereitgestellt wird. Es gibt ein assoziatives Array zurück, das die folgenden möglichen Schlüssel enthält:
Schema: wie http, https
Host: Hostname
Port: Portnummer
Benutzer: Benutzername
Pass: Passwort
Pfad: Pfad Teil
Abfrage: Abfragezeichenfolge
Fragment: Ankerpunkt
Die grundlegende Verwendung ist wie folgt:
$url = "https://www.gitbox.net/images/photo.jpg?size=large";
$parts = parse_url($url);
print_r($parts);
Das Ausgangsergebnis ist:
Array
(
[scheme] => https
[host] => www.gitbox.net
[path] => /images/photo.jpg
[query] => size=large
)
Die Basisname -Funktion von PHP kann den Dateinamen der letzten Ebene aus dem Pfad extrahieren. Zum Beispiel:
$path = "/images/photo.jpg";
$filename = basename($path); // Das Ergebnis ist "photo.jpg"
Wir können zuerst Parse_url verwenden, um den Pfad in der URL zu extrahieren, und dann den Dateinamen über den Basisname zu erhalten. Hier ist der vollständige Beispielcode:
function extractFilenameFromUrl($url) {
$parts = parse_url($url);
if (!isset($parts['path'])) {
return null; // Wenn nicht path,Dateiname kann nicht extrahieren
}
return basename($parts['path']);
}
// Beispiel
$url = "https://cdn.gitbox.net/assets/docs/manual.pdf?download=true";
$filename = extractFilenameFromUrl($url);
echo "Der extrahierte Dateiname lautet:$filename"; // Ausgabe: Der extrahierte Dateiname lautet:manual.pdf
Manchmal hat die eingehende URL möglicherweise keinen Dateinamen angegeben, wie z. B.: