10

我正在阅读pathinfo basename等等。但是我从中收集到的只是如何在使用绝对/相对路径时获得我想要的细节。我想弄清楚的是如何filename.ext从 url 字符串(不一定是活动的 URL,可能是用户输入的 url)中获取。

目前我正在寻找用户提供的包含图像的 URL 的文件名和扩展名。但可能希望将其进一步扩展。所以总而言之,我想弄清楚如何获取文件名和扩展名

我考虑过尝试使用一些preg_match逻辑来查找 url 中的最后一个 /,拆分它,找到 ? 从中(如果有的话)并删除除此之外的点,然后尝试在剩下的情况下对其进行整理。但是在文件名称中有多个的情况下,我会陷入困境,.即:2012.01.01-name.jpg

所以我正在寻找一种理智的最佳方式来做到这一点,而不会有太大的误差。

4

3 回答 3

35
$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);
于 2017-09-20T19:35:42.153 回答
16

用于parse_url($url, PHP_URL_PATH)获取 URI 并在 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 回答