<?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 () memiliki bug ketika memproses karakter Asia seperti Cina.
Sun Junwen
1
Terima kasih Sun, Anda baru saja menyelamatkan saya berjam-jam membunuh bug karena aplikasi saya akan digunakan di luar negeri.
SilentSteel
11
Saya akan menyarankan pathinfolebih basenamesebagai Metafaniel diposting di bawah ini. pathinfo()akan memberi Anda array dengan bagian-bagian jalan. Atau untuk kasus di sini, Anda bisa secara khusus meminta nama file. Jadi pathinfo('/var/www/html/index.php', PATHINFO_FILENAME)sebaiknya kembalikan 'index.php'dokumentasi PHP Pathinfo
OnethingSimple
7
@OnethingSimple Periksa dokumen lagi ... meskipun secara intuitif, Anda ingin PATHINFO_BASENAMEmendapatkan yang lengkap index.php. PATHINFO_FILENAMEakan memberimu index.
levigroker
1
dalam hal apa pun, untuk metode yang kompatibel dengan unicode, mb_substr($filepath,mb_strrpos($filepath,'/',0,'UTF-16LE'),NULL,'UTF-16LE')- cukup ganti UTF-16LE dengan karakter apa pun yang digunakan sistem file Anda (NTFS dan ExFAT menggunakan UTF16)
hanshenrik
68
Saya telah melakukan ini menggunakan fungsi PATHINFOyang membuat array dengan bagian-bagian jalan untuk Anda gunakan! Misalnya, Anda dapat melakukan ini:
The basenameFungsi harus memberikan apa yang Anda inginkan:
Diberikan string yang berisi path ke file, fungsi ini akan mengembalikan nama dasar file.
Misalnya, mengutip halaman manual:
<?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"?>
Ada beberapa cara untuk mendapatkan nama file dan ekstensi. Anda dapat menggunakan yang berikut ini yang mudah digunakan.
$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
Saya tidak berpikir bug nya, dalam dokumen yang disebutkan: 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. . Tapi saya juga lebih suka menggunakan preg_replace, karena pemisah direktori berbeda antara sistem operasi. Di Ubuntu `\` bukan pemisah directoy dan nama bas tidak akan berpengaruh padanya.
Untuk melakukan ini di baris paling sedikit saya sarankan menggunakan DIRECTORY_SEPARATORkonstanta built-in bersama denganexplode(delimiter, string) untuk memisahkan jalan menjadi bagian-bagian dan kemudian cukup memetik elemen terakhir dalam array yang disediakan.
Untuk mendapatkan nama file yang tepat dari URI, saya akan menggunakan metode ini:
<?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
lebihbasename
sebagai Metafaniel diposting di bawah ini.pathinfo()
akan memberi Anda array dengan bagian-bagian jalan. Atau untuk kasus di sini, Anda bisa secara khusus meminta nama file. Jadipathinfo('/var/www/html/index.php', PATHINFO_FILENAME)
sebaiknya kembalikan'index.php'
dokumentasi PHP PathinfoPATHINFO_BASENAME
mendapatkan yang lengkapindex.php
.PATHINFO_FILENAME
akan memberimuindex
.mb_substr($filepath,mb_strrpos($filepath,'/',0,'UTF-16LE'),NULL,'UTF-16LE')
- cukup ganti UTF-16LE dengan karakter apa pun yang digunakan sistem file Anda (NTFS dan ExFAT menggunakan UTF16)Saya telah melakukan ini menggunakan fungsi
PATHINFO
yang membuat array dengan bagian-bagian jalan untuk Anda gunakan! Misalnya, Anda dapat melakukan ini:Ini akan mengembalikan:
Penggunaan fungsi ini telah tersedia sejak PHP 5.2.0!
Kemudian Anda dapat memanipulasi semua bagian yang Anda butuhkan. Misalnya, untuk menggunakan jalur lengkap, Anda dapat melakukan ini:
sumber
The
basename
Fungsi harus memberikan apa yang Anda inginkan:Misalnya, mengutip halaman manual:
Atau, dalam kasus Anda:
Anda akan mendapatkan:
sumber
Ada beberapa cara untuk mendapatkan nama file dan ekstensi. Anda dapat menggunakan yang berikut ini yang mudah digunakan.
sumber
Dengan SplFileInfo :
Ref : http://php.net/manual/en/splfileinfo.getfilename.php
sumber
Coba ini:
sumber
basename () memiliki bug saat memproses karakter Asia seperti Cina.
Saya menggunakan ini:
sumber
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.
. Tapi saya juga lebih suka menggunakan preg_replace, karena pemisah direktori berbeda antara sistem operasi. Di Ubuntu `\` bukan pemisah directoy dan nama bas tidak akan berpengaruh padanya.sumber
Untuk melakukan ini di baris paling sedikit saya sarankan menggunakan
DIRECTORY_SEPARATOR
konstanta built-in bersama denganexplode(delimiter, string)
untuk memisahkan jalan menjadi bagian-bagian dan kemudian cukup memetik elemen terakhir dalam array yang disediakan.Contoh:
sumber
Anda dapat menggunakan fungsi basename () .
sumber
Untuk mendapatkan nama file yang tepat dari URI, saya akan menggunakan metode ini:
sumber
sumber
Itu mudah. Sebagai contoh:
Outputnya adalah:
sumber
sumber