使用PHP从URL字符串中获取文件路径/扩展名


Use PHP to Get File Path/Extension from URL string

我正在阅读pathinfo basename之类的内容。但是我从这些收集的所有信息都是如何在使用绝对/相对路径时获得我想要的细节。我想弄清楚的是如何从url字符串(不一定是活动url,也许是用户输入url)中获得filename.ext

目前我正在寻找得到包含图像的用户提供的url的文件名和扩展名。但可能想要把这条路延伸下去。总之,我想弄清楚如何获得文件名和扩展名

我想尝试使用一些preg_match逻辑在url中找到最后一个/,分裂它,找到?从这一点(如果有的话),并删除超出这一点,然后尝试整理之后剩下的东西。但我卡住的情况下,文件有多个.的名称,即:2012.01.01-name.jpg

所以我正在寻找一种合理的最佳方式来做到这一点,而没有太多的误差

$path      = parse_url($url, PHP_URL_PATH);       // get path from url
$extension = pathinfo($path, PATHINFO_EXTENSION); // get ext from path
$filename  = pathinfo($path, PATHINFO_FILENAME);  // get name from path

也可以使用一行代码:

$extension = pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_EXTENSION);
$filename  = pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_FILENAME);

使用parse_url($url, PHP_URL_PATH)获取URI,并使用pathinfo/basename中的URI

你可以用下面的代码做你想做的…

$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