当前位置: 首页> 最新文章列表> dirname 和 pathinfo 能一起用吗?路径和文件信息拆解示例

dirname 和 pathinfo 能一起用吗?路径和文件信息拆解示例

gitbox 2025-08-05
<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">"欢迎阅读本文!"</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">/**
 * dirname 和 pathinfo 能一起用吗?路径和文件信息拆解示例
 * 
 * 在 PHP 中,处理文件路径时,dirname 和 pathinfo 都是非常常用的函数。
 * 它们分别用于获取路径的不同部分,本文将讲解它们的用法以及能否结合使用,
 * 并通过示例演示如何拆解路径和文件信息。
 */</span>

<span class="hljs-comment">/**
 * dirname 函数
 * 
 * dirname() 用于返回路径中父目录的路径。
 * 它可以接受第二个参数,用于指定返回的层级。
 */</span>
</span><span><span class="hljs-variable">$filepath</span></span><span> = </span><span><span class="hljs-string">"/var/www/html/index.php"</span></span><span>;

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"原始路径: "</span></span><span> . </span><span><span class="hljs-variable">$filepath</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;

</span><span><span class="hljs-comment">// 获取上一级目录</span></span><span>
</span><span><span class="hljs-variable">$parentDir</span></span><span> = </span><span><span class="hljs-title function_ invoke__">dirname</span></span><span>(</span><span><span class="hljs-variable">$filepath</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"上一级目录: "</span></span><span> . </span><span><span class="hljs-variable">$parentDir</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;

</span><span><span class="hljs-comment">// 获取上两级目录</span></span><span>
</span><span><span class="hljs-variable">$grandParentDir</span></span><span> = </span><span><span class="hljs-title function_ invoke__">dirname</span></span><span>(</span><span><span class="hljs-variable">$filepath</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"上两级目录: "</span></span><span> . </span><span><span class="hljs-variable">$grandParentDir</span></span><span> . </span><span><span class="hljs-string">"\n\n"</span></span><span>;

<span class="hljs-comment">/**
 * pathinfo 函数
 * 
 * pathinfo() 返回一个数组,包含文件路径的目录名、基本名、扩展名和文件名(不含扩展名)。
 * 也可以通过传递第二个参数获取特定部分。
 */</span>
</span><span><span class="hljs-variable">$pathInfo</span></span><span> = </span><span><span class="hljs-title function_ invoke__">pathinfo</span></span><span>(</span><span><span class="hljs-variable">$filepath</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"pathinfo 返回的数组结构:\n"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$pathInfo</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__">pathinfo</span></span><span>(</span><span><span class="hljs-variable">$filepath</span></span><span>, PATHINFO_EXTENSION);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"文件扩展名: "</span></span><span> . </span><span><span class="hljs-variable">$extension</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><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-title function_ invoke__">pathinfo</span></span><span>(</span><span><span class="hljs-variable">$filepath</span></span><span>, PATHINFO_FILENAME);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"文件名(不含扩展名): "</span></span><span> . </span><span><span class="hljs-variable">$filename</span></span><span> . </span><span><span class="hljs-string">"\n\n"</span></span><span>;

<span class="hljs-comment">/**
 * dirname 和 pathinfo 能一起用吗?
 * 
 * 答案是肯定的。
 * 你可以先用 dirname 获取父目录路径,再用 pathinfo 解析更高层路径的细节,
 * 或者结合两者分别处理路径的不同部分。
 * 例如,你想获取文件所在目录的上一级目录的文件名信息,可以这么做:
 */</span>

</span><span><span class="hljs-variable">$parentDir</span></span><span> = </span><span><span class="hljs-title function_ invoke__">dirname</span></span><span>(</span><span><span class="hljs-variable">$filepath</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"文件所在目录: <span class="hljs-subst">$parentDir</span></span></span><span>\n";

</span><span><span class="hljs-comment">// 解析父目录路径信息</span></span><span>
</span><span><span class="hljs-variable">$parentDirInfo</span></span><span> = </span><span><span class="hljs-title function_ invoke__">pathinfo</span></span><span>(</span><span><span class="hljs-variable">$parentDir</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"父目录路径信息:\n"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$parentDirInfo</span></span><span>);

<span class="hljs-comment">/**
 * 总结:
 * - dirname 用于获取路径中的父目录部分,适合向上层目录递归。
 * - pathinfo 用于获取路径中目录名、文件名和扩展名等详细信息。
 * - 两者结合使用能更灵活地拆解和处理文件路径。
 */</span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>