毎日の開発では、プロトコル、ホスト名、パス、またはクエリパラメーターなど、URLを解析するためにURLを解析する必要があります。いくつかのシナリオでは、URLのパス部分に含まれる「ファイル名」のみを気にする場合があります。
PHPでは、組み込みのparse_url関数を使用してURLをさまざまな部分に分割し、 Basename関数を組み合わせてパスから必要なファイル名を抽出できます。この記事では、このプロセスを例と組み合わせて実装する方法について説明します。
parse_urlは、phpがparsing urlsに提供する関数です。次の可能なキーを含む連想配列を返します。
スキーム:HTTP、HTTPSなど
ホスト:ホスト名
ポート:ポート番号
ユーザー:ユーザー名
パス:パスワード
パス:パスパーツ
クエリ:クエリ文字列
フラグメント:アンカーポイント
基本的な使用法は次のとおりです。
$url = "https://www.gitbox.net/images/photo.jpg?size=large";
$parts = parse_url($url);
print_r($parts);
出力の結果は次のとおりです。
Array
(
[scheme] => https
[host] => www.gitbox.net
[path] => /images/photo.jpg
[query] => size=large
)
PHPのBasename関数は、パスから最後のレベルファイル名を抽出できます。例えば:
$path = "/images/photo.jpg";
$filename = basename($path); // 結果は次のとおりです "photo.jpg"
最初にparse_urlを使用してURL内のパスを抽出し、次にBasenameを介してファイル名を取得できます。これが完全なサンプルコードです:
function extractFilenameFromUrl($url) {
$parts = parse_url($url);
if (!isset($parts['path'])) {
return null; // そうでない場合 path,ファイル名を抽出できません
}
return basename($parts['path']);
}
// 例
$url = "https://cdn.gitbox.net/assets/docs/manual.pdf?download=true";
$filename = extractFilenameFromUrl($url);
echo "抽出されたファイル名はです:$filename"; // 出力: 抽出されたファイル名はです:manual.pdf
着信URLには、次のようなファイル名が指定されていない場合があります。