【问题标题】:PHP Remove parameters from image extensionPHP 从图像扩展中删除参数
【发布时间】:2014-02-25 14:19:33
【问题描述】:

我从一个函数中获取图像 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;
?>

【问题讨论】:

    标签: php


    【解决方案1】:

    您可以按照this answer 中的建议使用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);
    }
    

    【讨论】:

      【解决方案2】:

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

      在您的具体情况下,您实际上面临另一个问题:看起来您设置了 http 服务器,使其直接尝试从本地文件系统传递物理文件。这不是处理此类 url 请求的方式。相反,它们应该由能够解释附加参数、应用任何请求的过滤器并传递该操作的结果的脚本处理程序来处理。

      如果您真的想处理这个严格基于字符串的操作,并且您似乎正在使用 php,那么请查看 parse_url() 函数以从 url 中提取单个部分。

      【讨论】:

        猜你喜欢
        • 2013-07-24
        • 2012-08-27
        • 1970-01-01
        • 1970-01-01
        • 2022-01-21
        • 1970-01-01
        • 1970-01-01
        • 2013-04-20
        相关资源
        最近更新 更多