Saya punya kode PHP ini:
function ShowFileExtension($filepath)
{
preg_match('/[^?]*/', $filepath, $matches);
$string = $matches[0];
$pattern = preg_split('/\./', $string, -1, PREG_SPLIT_OFFSET_CAPTURE);
if(count($pattern) > 1)
{
$filenamepart = $pattern[count($pattern)-1][0];
preg_match('/[^?]*/', $filenamepart, $matches);
return strtolower($matches[0]);
}
}
Jika saya memiliki file bernama my.zip
, fungsi ini kembali .zip
.
Saya ingin melakukan yang sebaliknya, saya ingin fungsi kembali my
tanpa ekstensi.
File ini hanya sebuah string dalam sebuah variabel.
Jawaban:
Tidak perlu untuk semua itu. Lihat pathinfo () , ini memberi Anda semua komponen jalur Anda.
Contoh dari manual:
Keluaran kode:
Atau sebagai alternatif Anda hanya bisa mendapatkan bagian-bagian tertentu seperti:
sumber
basename
. Tidak salah nama.Sebagai alternatif
pathinfo()
, Anda bisa menggunakannyabasename()
- Mengembalikan nama file komponen pathContoh dari manual PHP
Anda harus mengetahui ekstensi untuk menghapusnya terlebih dahulu.
Namun, karena pertanyaan Anda menunjukkan Anda perlu mendapatkan ekstensi dan nama dasarnya, saya akan memilih jawaban Pekka sebagai yang paling berguna, karena itu akan memberi Anda info apa pun yang Anda inginkan tentang jalur dan file dengan satu asli tunggal fungsi.
sumber
basename
, tetapipathinfo
seperti yang ditunjukkan pada halaman.https://php.net/manual/en/function.pathinfo.php
Tes fungsional sederhana: https://ideone.com/POhIDC
sumber
basename
;-)PATHINFO_FILENAME
bukanPATHINFO_EXTENSION
....filename
tidak memiliki perpanjangan sementarabasename
harus memiliki beberapa kecenderungan sadis ...Pendekatan lain adalah dengan menggunakan ekspresi reguler.
Ini menghapus dari periode terakhir
.
hingga akhir string.sumber
$fileName
yang dapat menyebabkan mesin berjalan dalam waktu yang eksponensial (atau lebih buruk). Dan dengan asumsi kita telah selesai membedah internal mesin regex spesifik ini dan secara teoritis membuktikannya kuat terhadap setiap nilai yang$fileName
mungkin, kode tersebut masih belum sewenang-wenang portabel ke platform lain yang memiliki implementasi lain dari mesin regex.Jika ekstensi tidak diketahui, gunakan solusi ini
Fungsi PHP MAN pathinfo
sumber
pathinfo
. Ini akan membantu OP membuatShowFileExtension
metode lebih baik dan akan memberikan bacaan tambahan bagi siapa pun yang mencoba menemukan jawaban ini. Juga sedikit deskripsi tidak akan tersesat ...@Gordon basename akan berfungsi dengan baik jika Anda tahu ekstensi, jika Anda tidak dapat menggunakan meledak:
sumber
pathinfo
, itulah sebabnya saya berikanbasename
sebagai alternatif saja. Tidak perlu menemukan kembalipathinfo
dengan regex atauexplode
.end(explode(".", $file));
memberi Anda ekstensi, bukan nama file.Hampir semua solusi di atas menunjukkan mendapatkan nama file dari variabel $ path
Cuplikan di bawah ini akan mendapatkan nama file yang dieksekusi saat ini tanpa ekstensi
Penjelasan
sumber
Tidak perlu menulis banyak kode. Bahkan itu bisa dilakukan hanya dengan satu baris kode. Lihat di sini
Di bawah ini adalah satu kode baris yang hanya mengembalikan nama file dan menghapus nama ekstensi:
Itu akan mencetak
Sumber: Hapus ekstensi dan hanya kembalikan nama file dalam PHP
sumber
@fire jika nama file menggunakan titik, Anda bisa mendapatkan output yang salah. Saya akan menggunakan metode @Gordon tetapi mendapatkan ekstensi juga, jadi fungsi basename berfungsi dengan semua ekstensi, seperti ini:
sumber
dalam kasus saya, saya gunakan di bawah ini. Saya tidak peduli apa perluasannya. : D saya pikir itu akan membantu Anda
sumber
$extenion
Anda bisa menulis ini
Ini akan mengembalikan elemen array saat ini, jika tidak digunakan sebelumnya.
sumber
Pendek
sumber
b.php
dan saya dieksekusia.php
memilikirequire('b.php')
. Maka output akan bagaimanab
bukannyaa
Nama file tanpa ekstensi file saat Anda tidak tahu ekstensi itu:
$basename = substr($filename, 0, strrpos($filename, "."));
sumber
Jika Anda tidak tahu ekstensi mana yang Anda miliki, maka Anda dapat mencoba ini:
Bekerja dengan semua kemungkinan:
sumber
Jawaban Anda di bawah solusi sempurna untuk menyembunyikan ekstensi file di php.
sumber
Solusi yang ada gagal ketika ada beberapa bagian ekstensi. Fungsi di bawah ini berfungsi untuk beberapa bagian, path lengkap atau hanya nama file:
sumber
Ini hanya mengembalikan nama file tanpa ekstensi dalam 1 baris:
sumber