You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中用%通配符匹配图片后缀的switch语句不生效原因求解

核心问题原因

  • PHP的switch语句执行的是全等字符串匹配,你写的"%.jpg"是SQL场景下的通配符写法,PHP原生字符串相等判断不识别这类规则,只会匹配文件名恰好为%.jpg的文件,自然无法匹配到后缀为.jpg的普通图片文件。
  • 如果你需要用通配符规则匹配文件名,可以使用PHP内置的fnmatch()函数,它支持*、?这类标准通配符,例如fnmatch('*.jpg', $imagee)就可以匹配所有后缀为.jpg的文件。

可直接运行的修复代码

更简洁稳定的方案是先提取文件后缀再做匹配,还可以处理大小写兼容问题:

$png = array();
$jpeg = array();
$jpg = array();
$gif = array();

if($dirOpen = opendir('imagefiles'))
{
    while(($imagee = readdir($dirOpen))!==false)
    { 
        if ($imagee == '.' || $imagee == '..') continue;
        // 提取文件后缀并转小写,兼容.JPG、.Png这类大小写混合的后缀
        $file_ext = strtolower(pathinfo($imagee, PATHINFO_EXTENSION));
        switch($file_ext)
        {
            case "png": $png[] = $imagee; break;
            case "jpeg": $jpeg[] = $imagee; break;
            case "jpg": $jpg[] = $imagee; break;
            case "gif": $gif[] = $imagee; break;
            default: echo "error 不支持的文件类型:".$imagee . PHP_EOL;
        }
    }
    print_r($jpg);
    closedir($dirOpen);
}

$imagesss =  array_merge($png, $jpeg, $jpg, $gif);

优化说明

  • 替换原逻辑中的or为||,避免逻辑运算符优先级问题导致判断出错
  • 增加后缀转小写处理,避免大写后缀的文件无法匹配
  • 报错信息增加文件名输出,方便排查异常文件

内容的提问来源于stack exchange,提问作者user14579575

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:06:03