<?php
$path ="/home/httpd/html/index.php";
$file = basename($path);// $file is set to "index.php"
$file = basename($path,".php");// $file is set to "index"?>
basename () a un bug lors du traitement des caractères asiatiques comme le chinois.
Sun Junwen
1
Merci Sun, vous venez de m'économiser des heures de suppression de bugs puisque mon application sera utilisée à l'étranger.
SilentSteel
11
Je suggérerais pathinfoplus basenameque Metafaniel a posté ci-dessous. pathinfo()vous donnera un tableau avec les parties du chemin. Ou pour le cas ici, vous pouvez simplement demander spécifiquement le nom du fichier. Donc, pathinfo('/var/www/html/index.php', PATHINFO_FILENAME)devrait retourner la 'index.php'documentation PHP Pathinfo
OnethingSimple
7
@OnethingSimple Vérifiez à nouveau les documents ... si intuitif que ce soit, vous voudrez PATHINFO_BASENAMEen avoir plein index.php. PATHINFO_FILENAMEvous donnera index.
levigroker
1
dans tous les cas, pour une méthode compatible unicode, mb_substr($filepath,mb_strrpos($filepath,'/',0,'UTF-16LE'),NULL,'UTF-16LE')- remplacez simplement UTF-16LE par le jeu de caractères utilisé par votre système de fichiers (NTFS et ExFAT utilise UTF16)
hanshenrik
68
Je l'ai fait en utilisant la fonction PATHINFOqui crée un tableau avec les parties du chemin à utiliser! Par exemple, vous pouvez faire ceci:
Il existe plusieurs façons d'obtenir le nom et l'extension du fichier. Vous pouvez utiliser le suivant qui est facile à utiliser.
$url ='http://www.nepaltraveldoor.com/images/trekking/nepal/annapurna-region/Annapurna-region-trekking.jpg';
$file = file_get_contents($url);// To get file
$name = basename($url);// To get file name
$ext = pathinfo($url, PATHINFO_EXTENSION);// To get extension
$name2 =pathinfo($url, PATHINFO_FILENAME);// File name without extension
La basenamefonction devrait vous donner ce que vous voulez:
Étant donné une chaîne contenant un chemin d'accès à un fichier, cette fonction retournera le nom de base du fichier.
Par exemple, en citant la page du manuel:
<?php
$path ="/home/httpd/html/index.php";
$file = basename($path);// $file is set to "index.php"
$file = basename($path,".php");// $file is set to "index"?>
Je ne pense pas que ce bogue, dans les docs son mentionnée: Caution basename() is locale aware, so for it to see the correct basename with multibyte character paths, the matching locale must be set using the setlocale() function. . Mais je préfère également utiliser preg_replace, car le séparateur de répertoires diffère selon les systèmes d'exploitation. Sur Ubuntu `\` n'est pas un séparateur direct et le nom de base n'aura aucun effet dessus.
Pour ce faire, en quelques lignes, je suggère d'utiliser la DIRECTORY_SEPARATORconstante intégrée avec explode(delimiter, string)pour séparer le chemin en parties, puis arracher simplement le dernier élément du tableau fourni.
Pour obtenir le nom de fichier exact de l'URI, j'utiliserais cette méthode:
<?php
$file1 =basename("http://localhost/eFEIS/agency_application_form.php?formid=1&task=edit");//basename($_SERVER['REQUEST_URI']); // Or use this to get the URI dynamically.
echo $basename = substr($file1,0, strpos($file1,'?'));?>
pathinfo
plusbasename
que Metafaniel a posté ci-dessous.pathinfo()
vous donnera un tableau avec les parties du chemin. Ou pour le cas ici, vous pouvez simplement demander spécifiquement le nom du fichier. Donc,pathinfo('/var/www/html/index.php', PATHINFO_FILENAME)
devrait retourner la'index.php'
documentation PHP PathinfoPATHINFO_BASENAME
en avoir pleinindex.php
.PATHINFO_FILENAME
vous donneraindex
.mb_substr($filepath,mb_strrpos($filepath,'/',0,'UTF-16LE'),NULL,'UTF-16LE')
- remplacez simplement UTF-16LE par le jeu de caractères utilisé par votre système de fichiers (NTFS et ExFAT utilise UTF16)Je l'ai fait en utilisant la fonction
PATHINFO
qui crée un tableau avec les parties du chemin à utiliser! Par exemple, vous pouvez faire ceci:Cela reviendra:
L'utilisation de cette fonction est disponible depuis PHP 5.2.0!
Ensuite, vous pouvez manipuler toutes les pièces selon vos besoins. Par exemple, pour utiliser le chemin complet, vous pouvez procéder comme suit:
la source
Il existe plusieurs façons d'obtenir le nom et l'extension du fichier. Vous pouvez utiliser le suivant qui est facile à utiliser.
la source
La
basename
fonction devrait vous donner ce que vous voulez:Par exemple, en citant la page du manuel:
Ou, dans votre cas:
Tu auras:
la source
Avec SplFileInfo :
Réf : http://php.net/manual/en/splfileinfo.getfilename.php
la source
Essaye ça:
la source
basename () a un bug lors du traitement des caractères asiatiques comme le chinois.
J'utilise ceci:
la source
Caution basename() is locale aware, so for it to see the correct basename with multibyte character paths, the matching locale must be set using the setlocale() function.
. Mais je préfère également utiliser preg_replace, car le séparateur de répertoires diffère selon les systèmes d'exploitation. Sur Ubuntu `\` n'est pas un séparateur direct et le nom de base n'aura aucun effet dessus.la source
Pour ce faire, en quelques lignes, je suggère d'utiliser la
DIRECTORY_SEPARATOR
constante intégrée avecexplode(delimiter, string)
pour séparer le chemin en parties, puis arracher simplement le dernier élément du tableau fourni.Exemple:
la source
Vous pouvez utiliser la fonction basename () .
la source
Pour obtenir le nom de fichier exact de l'URI, j'utiliserais cette méthode:
la source
la source
C'est simple. Par exemple:
La sortie sera:
la source
la source