<?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 () hat einen Fehler, wenn asiatische Zeichen wie Chinesisch verarbeitet werden.
So Junwen
1
Vielen Dank, Sun, Sie haben mir gerade Stunden beim Töten von Fehlern erspart, da meine App in Übersee verwendet wird.
SilentSteel
11
Ich würde vorschlagen , pathinfoüber basenamewie Metafaniel unten geschrieben. pathinfo()gibt Ihnen ein Array mit den Teilen des Pfades. Oder für den Fall hier können Sie einfach speziell nach dem Dateinamen fragen. Also pathinfo('/var/www/html/index.php', PATHINFO_FILENAME)sollte 'index.php'PHP Pathinfo Dokumentation zurückgeben
OnethingSimple
7
@OnethingSimple Überprüfen Sie die Dokumente erneut ... obwohl dies nicht intuitiv ist, möchten PATHINFO_BASENAMESie die vollständige Version erhalten index.php. PATHINFO_FILENAMEwerde dir geben index.
Levigroker
1
In jedem Fall - für eine Unicode-kompatible Methode mb_substr($filepath,mb_strrpos($filepath,'/',0,'UTF-16LE'),NULL,'UTF-16LE')- ersetzen Sie UTF-16LE einfach durch den von Ihrem Dateisystem verwendeten Zeichensatz (NTFS und ExFAT verwenden UTF16)
hanshenrik
66
Ich habe dies mit der Funktion gemacht, PATHINFOdie ein Array mit den Teilen des Pfades erstellt, die Sie verwenden können! Zum Beispiel können Sie dies tun:
Die basenameFunktion sollte Ihnen geben, was Sie wollen:
Bei einer Zeichenfolge, die einen Pfad zu einer Datei enthält, gibt diese Funktion den Basisnamen der Datei zurück.
Zum Beispiel die Seite des Handbuchs zitieren:
<?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"?>
Es gibt verschiedene Möglichkeiten, den Dateinamen und die Erweiterung abzurufen. Sie können die folgende verwenden, die einfach zu bedienen ist.
$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
Ich denke nicht, dass es ein Fehler ist, in den Dokumenten wird es erwähnt : 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. . Ich bevorzuge aber auch die Verwendung von preg_replace, da sich das Verzeichnis-Trennzeichen zwischen den Betriebssystemen unterscheidet. Unter Ubuntu ist `\` kein Direkttrennzeichen und der Basisname hat keine Auswirkung darauf.
Um dies in den wenigsten Zeilen zu tun, würde ich vorschlagen, die eingebaute DIRECTORY_SEPARATORKonstante zusammen mit explode(delimiter, string)zu verwenden, um den Pfad in Teile zu trennen und dann einfach das letzte Element im bereitgestellten Array abzureißen.
Um den genauen Dateinamen von der URI zu erhalten, würde ich diese Methode verwenden:
<?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
überbasename
wie Metafaniel unten geschrieben.pathinfo()
gibt Ihnen ein Array mit den Teilen des Pfades. Oder für den Fall hier können Sie einfach speziell nach dem Dateinamen fragen. Alsopathinfo('/var/www/html/index.php', PATHINFO_FILENAME)
sollte'index.php'
PHP Pathinfo Dokumentation zurückgebenPATHINFO_BASENAME
Sie die vollständige Version erhaltenindex.php
.PATHINFO_FILENAME
werde dir gebenindex
.mb_substr($filepath,mb_strrpos($filepath,'/',0,'UTF-16LE'),NULL,'UTF-16LE')
- ersetzen Sie UTF-16LE einfach durch den von Ihrem Dateisystem verwendeten Zeichensatz (NTFS und ExFAT verwenden UTF16)Ich habe dies mit der Funktion gemacht,
PATHINFO
die ein Array mit den Teilen des Pfades erstellt, die Sie verwenden können! Zum Beispiel können Sie dies tun:Dies wird zurückkehren:
Die Verwendung dieser Funktion ist seit PHP 5.2.0 verfügbar!
Dann können Sie alle Teile nach Bedarf bearbeiten. Um beispielsweise den vollständigen Pfad zu verwenden, können Sie Folgendes tun:
quelle
Die
basename
Funktion sollte Ihnen geben, was Sie wollen:Zum Beispiel die Seite des Handbuchs zitieren:
Oder in Ihrem Fall:
Du wirst kriegen:
quelle
Es gibt verschiedene Möglichkeiten, den Dateinamen und die Erweiterung abzurufen. Sie können die folgende verwenden, die einfach zu bedienen ist.
quelle
Mit SplFileInfo :
Ref : http://php.net/manual/en/splfileinfo.getfilename.php
quelle
Versuche dies:
quelle
basename () hat einen Fehler bei der Verarbeitung asiatischer Zeichen wie Chinesisch.
Ich benutze das:
quelle
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.
. Ich bevorzuge aber auch die Verwendung von preg_replace, da sich das Verzeichnis-Trennzeichen zwischen den Betriebssystemen unterscheidet. Unter Ubuntu ist `\` kein Direkttrennzeichen und der Basisname hat keine Auswirkung darauf.quelle
Um dies in den wenigsten Zeilen zu tun, würde ich vorschlagen, die eingebaute
DIRECTORY_SEPARATOR
Konstante zusammen mitexplode(delimiter, string)
zu verwenden, um den Pfad in Teile zu trennen und dann einfach das letzte Element im bereitgestellten Array abzureißen.Beispiel:
quelle
Sie können die Funktion basename () verwenden.
quelle
Um den genauen Dateinamen von der URI zu erhalten, würde ich diese Methode verwenden:
quelle
quelle
Es ist einfach. Beispielsweise:
Die Ausgabe wird sein:
quelle
quelle