PHP 从图像扩展中删除参数

use*_*854 2 php

我从一个函数获取图像 url。我需要找到图像的扩展名。有时图像 url 带有诸如 之类的参数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;
?>
Run Code Online (Sandbox Code Playgroud)

Tom*_*ech 5

您可以按照此答案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);
}
Run Code Online (Sandbox Code Playgroud)

输出

tif
Run Code Online (Sandbox Code Playgroud)

如果没有第二个参数,parse_url则返回一个关联数组,但如果您只需要路径,则可以传递第二个参数parse_url($link, PHP_URL_PATH),它将返回一个变量。

if ($path = parse_url($link, PHP_URL_PATH)) { 
   echo pathinfo($path, PATHINFO_EXTENSION);
}
Run Code Online (Sandbox Code Playgroud)