10

などを読んでいpathinfo basenameます。しかし、それらから収集しているのは、絶対/相対パスを使用するときに必要な詳細を取得する方法だけです。私が理解しようとしているのはfilename.ext、URL文字列から取得する方法です(必ずしもアクティブなURLではなく、ユーザー入力のURLかもしれません)。

現在、画像を含むユーザー提供の URL のファイル名と拡張子を取得しようとしています。しかし、これをさらに先に拡張したい場合があります。全体として、ファイル名と拡張子を取得する方法を理解したいと思います

preg_matchURL の最後の / を見つけて分割し、? を見つけるロジックを使用しようと考えました。それから(もしあれば)、それを超えたポイントを削除してから、残ったものでそれを整理しようとします。.しかし、ファイルの名前に複数の名前が含まれている場合、私は動けなくなります。2012.01.01-name.jpg

だから私は、誤差をあまり許容せずにこれを行うための健全な最適な方法を探しています。

4

3 に答える 3

16

URI を取得するために使用parse_url($url, PHP_URL_PATH)し、pathinfo/basename で URI を使用します。

于 2013-05-16T08:23:28.113 に答える
1

以下のコードを使用して、必要なことを行うことができます...

$fileName = $_SERVER['SCRIPT_FILENAME']; //$_SERVER['SCRIPT_FILENAME'] can be replaced by the variable in which the file name is being stored
$fileName_arr = explode(".",$fileName);

$arrLength = count($fileName_arr);
$lastEle = $arrLength - 1;
echo $fileExt = $fileName_arr[$arrLength - 1]; //Gives the file extension
unset($fileName_arr[$lastEle]);
$fileNameMinusExt = implode(".",$fileName_arr);

$fileNameMinusExt_arr = explode("/",$fileNameMinusExt);
$arrLength = count($fileNameMinusExt_arr);
$lastEle = $arrLength - 1;
echo $fileExt = $fileNameMinusExt_arr[$arrLength - 1]; //Gives the filename
于 2013-05-16T08:45:30.393 に答える