我正在写一个图像上传脚本,并且已将常见的图像扩展名列入白名单。我需要能够获取文件扩展名以确定它们是否在白名单中,但是我在使用某些URL时遇到了麻烦。
这是一个例子:
我的代码:
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] 删除。
我来说两句