<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Ce document porte sur pathinfo Recherche et analyse des chemins de traitement des fonctions avec des barres obliques</span></span><span>
</span><span><span class="hljs-comment">//--------------------------------------------------</span></span><span>
<span class="hljs-comment">/**
* Lorsque la chaîne de chemin a une barre oblique à la fin,PHP pathinfo Quelles sont les circonstances particulières et les suggestions de gestion pour que la fonction renvoie le résultat?
*
* Utilisé PHP Lors du développement de fonctionnalités liées aux chemins de fichier,`pathinfo()` C'est une fonction intégrée très couramment utilisée。Il peut analyser la chaîne de chemin et renvoyer le nom du répertoire dans le chemin、Nom de fichier de base、Extensions de fichiers et autres informations。Cependant,Lorsque la chaîne de chemin est coupée(/ ou \)À la fin,Le comportement de cette fonction aura des situations spéciales qui ne sont pas très intuitives.。
*
* Cet article analysera ces situations en détail sur la base d'exemples,Et fournir des suggestions de manutention correspondantes,Aider les développeurs à traiter les informations sur le chemin plus régulièrement。
*
* ### un、pathinfo() Utilisation de base des fonctions
*
* `pathinfo()` 用于retourun个数组,Contient les composants suivants du chemin:
*
* - dirname:Table des matières
* - basename:Nom de fichier Part(Avec extension)
* - extension:Extension
* - filename:不Avec extension的nom de fichier
*
* Exemple:
* ```php
* pathinfo('/var/www/html/index.php');
* // retour:
* // [
* // 'dirname' => '/var/www/html',
* // 'basename' => 'index.php',
* // 'extension' => 'php',
* // 'filename' => 'index'
* // ]
* ```
*
* ### deux、Circonstances spéciales lorsqu'ils ont une barre de queue
*
* 当chemin以斜杠À la fin,Par exemple:
*
* ```php
* pathinfo('/var/www/html/');
* ```
*
* retour结果comme下(PHP 8.x):
*
* ```php
* [
* 'dirname' => '/var/www',
* 'basename' => 'html',
* 'extension' => '',
* 'filename' => 'html'
* ]
* ```
*
* À ce moment-là,`pathinfo()` 会将倒数第deux层目录(`html`)Comme `basename` retour,Au lieu du nom de fichier vide attendu。autrement dit,Il ignore la barre de queue,把倒数第deux级目录当成“nom de fichier”traiter avec。
*
* 更极端un点:
*
* ```php
* pathinfo('/');
* ```
*
* retour:
*
* ```php
* [
* 'dirname' => '/',
* 'basename' => '',
* ]
* ```
*
* Cela signifie `pathinfo()` Pas vraiment distinguable“chemin”toujours“document”,Il analyse juste en fonction du format de chaîne。
*
* ### trois、Explication du comportement
*
* `pathinfo()` 并不检查chemin是否实际存在ou是document,C'est une pure analyse d'une chaîne。Si la fin est une barre oblique,它会将倒数第deux级目录视为nom de fichiertraiter avec,因为它假设最后un个非空段是“basename”。
*
* 所以对于以斜杠结尾的chemin,Il ignore en fait la barre oblique,把前un部分当成有效chemin。
*
* ### Quatre、traiter avec建议
*
* **1. Utilisé pathinfo() 前统un清理chemin尾部的斜杠:**
*
* comme果你明确只traiter avecdocumentchemin,而不是目录chemin,建议统unUtilisé `pathinfo()` 之前清除chemin末尾的斜杠:
*
* ```php
* $cleanPath = rtrim($path, '/\\');
* $info = pathinfo($cleanPath);
* ```
*
* Cela garantit `basename` et `filename` 的含义始终指向真正的document部分。
*
* **2. 对目录chemin的特殊判断:**
*
* comme果chemin本身是目录,et finir avec une barre oblique,Mais tu veux toujours connaître le répertoire“nom”,Disponible `basename(rtrim($path, '/\\'))`,Ne pas compter sur `pathinfo()` Résultats。
*
* ```php
* $dirname = basename(rtrim($path, '/\\'));
* ```
*
* **3. 小心根chemin(/)的traiter avec:**
*
* 对于根chemin `/`,`pathinfo()` retour的 `basename` C'est une chaîne vide。Cela peut être UI 展示ou逻辑判断时引发问题,需要单独做判断traiter avec:
*
* ```php
* if ($path === '/') {
* $basename = '/';
* } else {
* $basename = basename(rtrim($path, '/\\'));
* }
* ```
*
* ### cinq、Résumer
*
* `pathinfo()` 是un个方便的函数,但在traiter avec带尾部斜杠的chemin时,它的行为可能与你的预期不un致。理解它的工作原理并配合chemin清理函数(comme `rtrim()`)utiliser,可以避免很多chemin解析中的陷阱。
*
* 最安全的方式是先确定chemin的语义(是目录toujoursdocument),然后有针对性地traiter avecchemin格式,避免错误地解读目录名为nom de fichierou出现空 `basename` Le problème。
*/</span>
</span></span>