如何获取路径中包含数据的文件扩展名?

内特

我正在写一个图像上传脚本,并且已将常见的图像扩展名列入白名单。我需要能够获取文件扩展名以确定它们是否在白名单中,但是我在使用某些URL时遇到了麻烦。

这是一个例子:

http://pisces.bbystatic.com/image/BestBuy_US/images/products/5512/5512124_ra.jpg;canvasHeight=280;canvasWidth=280

我的代码:

echo pathinfo($url, PATHINFO_EXTENSION);

输出以下内容:

jpg;canvasHeight=280;canvasWidth=280

演示

我可以将代码更改为此,从而解决了该问题:

$parts = explode(';', pathinfo($url, PATHINFO_EXTENSION));
echo $parts[0];

演示

但是,我不知道这是否是最好的方法(一方面,因为其他网站可能对数据使用不同的定界符而不是分号);

有没有更好的办法?

编辑:可能值得注意的是,我尝试将图像上传到这里作为测试(使用示例URL),并且StackOverflow毫不费力地上传了图像。

歇斯底里

仅使用pathinfo()可以匹配类似的情况http://google.com -> com首先使用parse_url安全地获取URL路径,然后使用pathinfo获取文件扩展名。

如果URL使用查询字符串(例如?foo=bar),则该代码就足够了。但以您的示例为例,其中URL使用某种自定义格式而不是查询字符串,则可以使用RegEx来选择的第一个字母数字部分$ext

$url = 'http://pisces.bbystatic.com/image/BestBuy_US/images/products/5512/5512124_ra.jpg;canvasHeight=280;canvasWidth=280';
$ext = pathinfo(parse_url($url, PHP_URL_PATH), PATHINFO_EXTENSION);
if (!empty($ext)) {
    preg_match('/[a-zA-Z0-9]+/', $ext, $matches);
    $ext = $matches[0];
}

echo $ext;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从文件路径中获取扩展名?

如何从Ruby中的文件路径获取不带扩展名的文件名

如何从Python路径中获取不带扩展名的文件名?

如何从 Python 中的路径获取不带扩展名的文件名?

如何从没有扩展名的路径中获取特定文件名python

如何从字符串路径获取文件扩展名

Laravel - 如何从路径获取文件扩展名?

如何在Rust中获取不带扩展名的文件路径?

如何获取特定文件的名称但不使用路径中的扩展名?

如何在PHP中获取文件扩展名?

如何在Shell脚本中获取文件扩展名

如何在Android中获取文件扩展名?

如何在grails中获取文件扩展名?

如何在Flutter中获取文件扩展名?

如何将包含扩展名的文件路径复制到.txt文件

SQLite:从包含文件名的列中获取不带扩展名的文件

如何正确获取文件扩展名?

AngularJS如何获取文件扩展名

在JavaScript中获取文件扩展名

在Bash中获取文件扩展名

如何从上传的图片中获取文件扩展名,而文件名中没有扩展名

如何检索特定文件扩展名的文件的文件路径?

如何获取具有特定扩展名的所有文件的路径

如何从V2 Box iOS SDK获取文件扩展名和路径?

如何通过拖放获取文件路径和扩展名?BVS

用户右键单击资源管理器/上下文中的文件时,如何获取vscode扩展名中的文件名或路径?

从文档目录中获取包含相同名称但具有不同扩展名的文件列表。

在Haskell中,如何获取不带文件扩展名的文件名?

获取文件扩展名