我从一个函数获取图像网址。我需要找到图像的扩展名。有时图片网址会带有“http://slimages.macys.com/is/image/MCY/products/4/optimized/1776484_fpx.tif?$ filterlrg $& wid = 370”等参数。那么,文件扩展名就像'tif?$ filterlrg $& wid = 370'。我怎样才能获得确切的扩展名。
以下是我的代码
<?php
$srcimg = 'http://slimages.macys.com/is/image/MCY/products/4/optimized/1776484_fpx.tif?$filterlrg$&wid=370';
$fullpath = basename($srcimg);
$userImageDetails = pathinfo($fullpath);
$extension = strtolower($userImageDetails['extension']);
echo $extension;
?>
答案 0 :(得分:0)
不要修复术语“文件扩展名”。它是80年代的遗物,被高估了。文件处理和使用不应该依赖于现代系统上的那些名称规则。 (我知道它仍然在基于MS-Windows的系统上运行,但这不会使声明的真实性无效)
在您的特定情况下,您实际上面临另一个问题:看起来您设置了http服务器,使其直接尝试从本地文件系统传递物理文件。这不是如何处理这样的URL请求。相反,它们应由一些脚本处理程序处理,该处理程序能够解释其他参数,应用所请求的任何过滤器并提供该操作的结果。
如果你真的想要处理这个严格的字符串,并且因为你似乎正在使用php,那么看一下parse_url()
函数从url中提取单个部分。
答案 1 :(得分:0)
您可以按照parse_url()
$link = 'http://slimages.macys.com/is/image/MCY/products/4/optimized/1776484_fpx.tif?$filterlrg$&wid=370';
if ($url = parse_url($link)) {
echo pathinfo($url['path'], PATHINFO_EXTENSION);
}
tif
没有第二个参数,parse_url
返回一个关联数组但如果你只想要路径,你可以传递第二个参数parse_url($link, PHP_URL_PATH)
,它将返回一个变量。
if ($path = parse_url($link, PHP_URL_PATH)) {
echo pathinfo($path, PATHINFO_EXTENSION);
}