Dans le développement quotidien, nous devons souvent analyser l'URL pour en extraire des parties spécifiques, telles que le protocole, le nom d'hôte, le chemin ou les paramètres de requête. Dans certains scénarios, nous ne pouvons nous soucier que du "nom de fichier" contenu dans la partie Chemin de l'URL, tel que le nom de l'image, le nom du document, etc. dans l'adresse de la ressource.
Dans PHP, nous pouvons utiliser la fonction PARSE_URL intégrée pour diviser l'URL en différentes parties, puis combiner la fonction de nom de base pour extraire le nom de fichier que nous voulons du chemin. Cet article expliquera comment implémenter ce processus en combinaison avec des exemples.
PARSE_URL est une fonction fournie par PHP pour l'analyse des URL. Il renvoie un tableau associatif contenant les clés possibles suivantes:
Schéma: comme HTTP, HTTPS
Hôte: nom d'hôte
Port: numéro de port
Utilisateur: nom d'utilisateur
passer: mot de passe
Chemin: Partie de chemin
requête: chaîne de requête
Fragment: point d'ancrage
L'utilisation de base est la suivante:
$url = "https://www.gitbox.net/images/photo.jpg?size=large";
$parts = parse_url($url);
print_r($parts);
Le résultat de la sortie est:
Array
(
[scheme] => https
[host] => www.gitbox.net
[path] => /images/photo.jpg
[query] => size=large
)
La fonction de nom de base de PHP peut extraire le nom de fichier de dernier niveau du chemin. Par exemple:
$path = "/images/photo.jpg";
$filename = basename($path); // Le résultat est "photo.jpg"
Nous pouvons d'abord utiliser PARSE_URL pour extraire le chemin d'accès dans l'URL, puis obtenir le nom de fichier via Basen Name . Voici l'exemple de code complet:
function extractFilenameFromUrl($url) {
$parts = parse_url($url);
if (!isset($parts['path'])) {
return null; // Sinon path,Impossible d'extraire le nom de fichier
}
return basename($parts['path']);
}
// Exemple
$url = "https://cdn.gitbox.net/assets/docs/manual.pdf?download=true";
$filename = extractFilenameFromUrl($url);
echo "Le nom de fichier extrait est:$filename"; // Sortir: Le nom de fichier extrait est:manual.pdf
Parfois, l'URL entrante peut ne pas avoir un nom de fichier spécifié, tel que: