<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// In diesem Dokument handelt es sich um ungefähr pathinfo Forschung und Analyse von Funktionsverarbeitungspfaden mit Schwanzschleichen</span></span><span>
</span><span><span class="hljs-comment">//--------------------------------------------------</span></span><span>
<span class="hljs-comment">/**
* Wenn die Pfadfolge am Ende einen Schrägstrich hat,PHP pathinfo Was sind die besonderen Umstände und Vorschläge für die Funktion, das Ergebnis zurückzugeben??
*
* Im Einsatz PHP Bei der Entwicklung von Funktionen im Zusammenhang mit Dateipfaden,`pathinfo()` Es ist eine sehr häufig verwendete integrierte Funktion。Es kann die Pfadzeichenfolge analysieren und den Verzeichnisnamen im Pfad zurückgeben、Basisname、Dateierweiterungen und andere Informationen。Jedoch,Wenn die Pfadfolge aufgeschlüsselt ist(/ oder \)Am Ende,Das Verhalten dieser Funktion wird einige besondere Situationen haben, die nicht sehr intuitiv sind.。
*
* Dieser Artikel wird diese Situationen ausführlich anhand von Beispielen analysieren,Und geben Sie entsprechende Vorschläge zur Handhabung,Helfen Sie Entwicklern, die Pfadinformationen stetiger zu verarbeiten。
*
* ### eins、pathinfo() Grundnutzung von Funktionen
*
* `pathinfo()` 用于zurückkehreneins个数组,Enthält die folgenden Komponenten des Pfades:
*
* - dirname:Inhaltsverzeichnis
* - basename:Dateiname Teil(Mit Erweiterung)
* - extension:Verlängerung
* - filename:不Mit Erweiterung的Dateiname
*
* Beispiel:
* ```php
* pathinfo('/var/www/html/index.php');
* // zurückkehren:
* // [
* // 'dirname' => '/var/www/html',
* // 'basename' => 'index.php',
* // 'extension' => 'php',
* // 'filename' => 'index'
* // ]
* ```
*
* ### zwei、Besondere Umstände bei einem Schwanzstrich
*
* 当Weg以斜杠Am Ende,Zum Beispiel:
*
* ```php
* pathinfo('/var/www/html/');
* ```
*
* zurückkehren结果wie下(PHP 8.x):
*
* ```php
* [
* 'dirname' => '/var/www',
* 'basename' => 'html',
* 'extension' => '',
* 'filename' => 'html'
* ]
* ```
*
* Zu diesem Zeitpunkt,`pathinfo()` 会将倒数第zwei层目录(`html`)Als `basename` zurückkehren,Anstelle des erwarteten leeren Dateinamens。Mit anderen Worten,Es ignoriert den Schwanzschlag,把倒数第zwei级目录当成“Dateiname”bewältigen。
*
* 更极端eins点:
*
* ```php
* pathinfo('/');
* ```
*
* zurückkehren:
*
* ```php
* [
* 'dirname' => '/',
* 'basename' => '',
* ]
* ```
*
* Das heisst `pathinfo()` Nicht wirklich unterscheidbar“Weg”Trotzdem“dokumentieren”,Es analysiert nur auf dem String -Format。
*
* ### drei、Verhaltenserklärung
*
* `pathinfo()` 并不检查Weg是否实际存在oder是dokumentieren,Es ist ein reiner Analyse einer Schnur。Wenn das Ende ein Schrägstrich ist,它会将倒数第zwei级目录视为Dateinamebewältigen,因为它假设最后eins个非空段是“basename”。
*
* 所以对于以斜杠结尾的Weg,Es ignoriert tatsächlich den Schrägstrich,把前eins部分当成有效Weg。
*
* ### Vier、bewältigen建议
*
* **1. Im Einsatz pathinfo() 前统eins清理Weg尾部的斜杠:**
*
* wie果你明确只bewältigendokumentierenWeg,而不是目录Weg,建议统einsIm Einsatz `pathinfo()` 之前清除Weg末尾的斜杠:
*
* ```php
* $cleanPath = rtrim($path, '/\\');
* $info = pathinfo($cleanPath);
* ```
*
* Dies gewährleistet `basename` Und `filename` 的含义始终指向真正的dokumentieren部分。
*
* **2. 对目录Weg的特殊判断:**
*
* wie果Weg本身是目录,und enden mit einem Schrägstrich,Aber Sie möchten immer noch das Verzeichnis kennenlernen“Name”,Verfügbar `basename(rtrim($path, '/\\'))`,Nicht auf `pathinfo()` Ergebnisse。
*
* ```php
* $dirname = basename(rtrim($path, '/\\'));
* ```
*
* **3. 小心根Weg(/)的bewältigen:**
*
* 对于根Weg `/`,`pathinfo()` zurückkehren的 `basename` Es ist eine leere Zeichenfolge。Das kann sein UI 展示oder逻辑判断时引发问题,需要单独做判断bewältigen:
*
* ```php
* if ($path === '/') {
* $basename = '/';
* } else {
* $basename = basename(rtrim($path, '/\\'));
* }
* ```
*
* ### fünf、Zusammenfassen
*
* `pathinfo()` 是eins个方便的函数,但在bewältigen带尾部斜杠的Weg时,它的行为可能与你的预期不eins致。理解它的工作原理并配合Weg清理函数(wie `rtrim()`)verwenden,可以避免很多Weg解析中的陷阱。
*
* 最安全的方式是先确定Weg的语义(是目录Trotzdemdokumentieren),然后有针对性地bewältigenWeg格式,避免错误地解读目录名为Dateinameoder出现空 `basename` Das Problem。
*/</span>
</span></span>