[PHP] URLからファイル名を取り出す

公開

スポンサーリンク

PHPでURL文字列からファイル名を取り出す方法のメモ。

$path = "http://hogehoge.com/year/month/day/postname.html";

仮に上のようなURLがあったとして、ここからファイル名に当たる「postname.html」の部分だけを取得したい場合に使うコードです。

$path = "http://hogehoge.com/year/month/day/postname.html";
$filename = strrchr( $zippath, "/" );// /postname.html
$filename = substr( $filename, 1 );// postname.html

まず、文字列が最後に現れた位置から後ろを取り出す関数strrchr()を使い、最後の「/」から後ろの部分を取得します。次にスラッシュは必要がないので、substr()で2文字目から後ろを取り出します。

これでURLからファイル名だけを取得することができるのですが・・・

ただしこれだと、URLがスラッシュで終わっているものには対応できていません。上記のコードは終端がスラッシュのURLの場合、falseが返ってきます。

$path = "http://hogehoge.com/year/month/day/postname/";//URLの終端が「/」
$filename = strrchr( $path, "/" );// 「/」一文字だけが返ってくる
$filename = substr( $filename, 1 );// 文字長が1なので、2文字目以降は取り出せない
var_dump( $filename );// bool(false)

ということで、ファイル名を取り出し可能なURLであるかどうかのチェックを行うコードを付け加える必要があります。

スポンサーリンク


Comment


  1. ななし : 投稿日:2016年10月31日 12:41 PM

    変数名 zippath ってなんですか?