PHP从图像扩展名中删除参数

时间:2014-02-25 14:19:34

标签: parameters

我从一个函数获取图像网址。我需要找到图像的扩展名。有时图片网址会带有“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;
?>

2 个答案:

答案 0 :(得分:0)

不要修复术语“文件扩展名”。它是80年代的遗物,被高估了。文件处理和使用不应该依赖于现代系统上的那些名称规则。 (我知道它仍然在基于MS-Windows的系统上运行,但这不会使声明的真实性无效)

在您的特定情况下,您实际上面临另一个问题:看起来您设置了http服务器,使其直接尝试从本地文件系统传递物理文件。这不是如何处理这样的URL请求。相反,它们应由一些脚本处理程序处理,该处理程序能够解释其他参数,应用所请求的任何过滤器并提供该操作的结果

如果你真的想要处理这个严格的字符串,并且因为你似乎正在使用php,那么看一下parse_url()函数从url中提取单个部分。

答案 1 :(得分:0)

您可以按照parse_url()

中的建议使用this answer
$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);
}