當前位置: 首頁> 最新文章列表> 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>