PHP URLやPATHからファイル名とファイル名抜きが欲しい(parse_url())
URLからファイル名だけ取得したい(PATHやURLのパース)
作成日:2018-02-09, 更新日:2019-11-25
基本
現状(2018/02/09時点)で、そんな便利な関数は無いと思われる。
つくってみる
下記のような感じで取得してみる。
1.対象のPATHをパースする(parse_url())
2.パースした結果に「path」が含まれていたらファイルに関する情報取得(pathinfo())
3.「2」の結果で、「filename」と「extension」があればファイル名が存在する→結合してファイル名
4.元のPATHからファイル名が最後に現れる位置を探す(strrpos())
5.「4」の結果で分割。
function parsePath($path) {
$pathUrl = parse_url($path);
$pathInfo = (isset($pathUrl['path']))? pathinfo($pathUrl['path']): array();
$fileName = ''; // ファイル名
if ( isset($pathInfo['filename']) && isset($pathInfo['extension']) ) {
$fileName = $pathInfo['filename'] . '.' . $pathInfo['extension'];
}
//$withQuery = ''; // getパラメーターつきファイル名・・・保留中
//if ( isset($pathUrl['query']) ) {
// $withQuery = $fileName . '?' . $pathUrl['query'];
//}
$pos = false;
if ( $fileName != '' ) {
$pos = strrpos( $path, $fileName );
}
if ( $pos===false ) {
$resultUrl = $path;
$resultFile = '';
}
else {
$resultUrl = substr($path, 0, $pos);
$resultFile = substr($path, $pos);
}
return array(
$resultUrl, // ファイル名の前
$resultFile, // ファイル名(パラメータ付き)
$fileName, // ファイル名
);
}
var_dump(parsePath($path));
※getパラメーターにファイル名が含まれていると・・・知らない。