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パラメーターにファイル名が含まれていると・・・知らない。