当前位置: 首页> 最新文章列表> 如何用 pathinfo 判断文件类型并执行不同 PHP 操作逻辑?

如何用 pathinfo 判断文件类型并执行不同 PHP 操作逻辑?

gitbox 2025-09-08
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 这部分代码无关正文内容,只是示例展示,实际应用可根据需要调整</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"程序开始执行&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/**
 * 如何用 pathinfo 判断文件类型并执行不同 PHP 操作逻辑?
 * 
 * 在PHP开发中,常常需要根据文件的类型执行不同的处理逻辑,比如图片文件、文档文件、视频文件等。
 * PHP内置的 pathinfo 函数可以方便地获取文件路径的信息,包括文件扩展名,从而实现对文件类型的判断。
 * 
 * 以下是一个简单示例,演示如何使用 pathinfo 获取文件扩展名,并根据不同类型执行不同的操作。
 */</span>

</span><span><span class="hljs-comment">// 假设有一个文件名</span></span><span>
</span><span><span class="hljs-variable">$filename</span></span><span> = </span><span><span class="hljs-string">"example.jpg"</span></span><span>;

</span><span><span class="hljs-comment">// 使用 pathinfo 获取文件信息</span></span><span>
</span><span><span class="hljs-variable">$fileInfo</span></span><span> = </span><span><span class="hljs-title function_ invoke__">pathinfo</span></span><span>(</span><span><span class="hljs-variable">$filename</span></span><span>);

</span><span><span class="hljs-comment">// 获取扩展名(注意转成小写,避免扩展名大小写不一致问题)</span></span><span>
</span><span><span class="hljs-variable">$extension</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-variable">$fileInfo</span></span><span>[</span><span><span class="hljs-string">'extension'</span></span><span>] ?? </span><span><span class="hljs-string">''</span></span><span>);

</span><span><span class="hljs-comment">// 根据扩展名执行不同逻辑</span></span><span>
</span><span><span class="hljs-keyword">switch</span></span><span> (</span><span><span class="hljs-variable">$extension</span></span><span>) {
    </span><span><span class="hljs-keyword">case</span></span><span> </span><span><span class="hljs-string">'jpg'</span></span><span>:
    </span><span><span class="hljs-keyword">case</span></span><span> </span><span><span class="hljs-string">'jpeg'</span></span><span>:
    </span><span><span class="hljs-keyword">case</span></span><span> </span><span><span class="hljs-string">'png'</span></span><span>:
    </span><span><span class="hljs-keyword">case</span></span><span> </span><span><span class="hljs-string">'gif'</span></span><span>:
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"这是一个图片文件,执行图片处理逻辑。&lt;br&gt;"</span></span><span>;
        </span><span><span class="hljs-comment">// 这里可以写图片相关的处理代码,比如缩略图生成、图片压缩等</span></span><span>
        </span><span><span class="hljs-keyword">break</span></span><span>;

    </span><span><span class="hljs-keyword">case</span></span><span> </span><span><span class="hljs-string">'pdf'</span></span><span>:
    </span><span><span class="hljs-keyword">case</span></span><span> </span><span><span class="hljs-string">'doc'</span></span><span>:
    </span><span><span class="hljs-keyword">case</span></span><span> </span><span><span class="hljs-string">'docx'</span></span><span>:
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"这是一个文档文件,执行文档处理逻辑。&lt;br&gt;"</span></span><span>;
        </span><span><span class="hljs-comment">// 这里可以写文档相关的处理代码,比如内容解析、格式转换等</span></span><span>
        </span><span><span class="hljs-keyword">break</span></span><span>;

    </span><span><span class="hljs-keyword">case</span></span><span> </span><span><span class="hljs-string">'mp4'</span></span><span>:
    </span><span><span class="hljs-keyword">case</span></span><span> </span><span><span class="hljs-string">'avi'</span></span><span>:
    </span><span><span class="hljs-keyword">case</span></span><span> </span><span><span class="hljs-string">'mov'</span></span><span>:
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"这是一个视频文件,执行视频处理逻辑。&lt;br&gt;"</span></span><span>;
        </span><span><span class="hljs-comment">// 这里可以写视频相关的处理代码,比如转码、提取封面等</span></span><span>
        </span><span><span class="hljs-keyword">break</span></span><span>;

    </span><span><span class="hljs-keyword">default</span></span><span>:
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"未知或不支持的文件类型,执行默认处理逻辑。&lt;br&gt;"</span></span><span>;
        </span><span><span class="hljs-comment">// 这里写默认处理逻辑,比如拒绝上传、提示错误等</span></span><span>
        </span><span><span class="hljs-keyword">break</span></span><span>;
}

<span class="hljs-comment">/**
 * 这里特别注意:
 * 1. pathinfo 只解析文件名字符串本身,不验证文件是否存在。
 * 2. 扩展名判断依赖文件名后缀,可能存在安全风险(比如恶意更改后缀),必要时应结合 mime_content_type 等方式进行二次验证。
 * 3. 扩展名应转换为统一格式(一般用 strtolower)来避免大小写导致判断失误。
 */</span>

</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>