Hapus Trailing Slash Dari String PHP

101

Apakah mungkin untuk menghapus garis miring /dari string menggunakan PHP?

Zac Brown
sumber

Jawaban:

235

Tentu saja, cukup periksa apakah karakter terakhir adalah garis miring dan kemudian nuklir yang itu.

if(substr($string, -1) == '/') {
    $string = substr($string, 0, -1);
}

Opsi lain (mungkin lebih baik) akan menggunakan rtrim()- yang ini menghapus semua garis miring yang tertinggal:

$string = rtrim($string, '/');
ThiefMaster
sumber
Saya juga menyarankan menggunakan DIRECTORY_SEPARATORalih-alih '/' jika menggunakan jalur file sehingga berfungsi di semua platform.
Brad
61

Ini menghapus garis miring tertinggal:

$str = rtrim($str, '/');
Ross
sumber
13
Perhatikan bahwa ini menghapus semua garis miring yang tertinggal.
Gumbo
24

Sudah lama diterima, namun dalam pencarian terkait saya, saya tersandung di sini, dan menambahkan "kelengkapan"; rtrim()bagus, namun diterapkan seperti ini:

$string = rtrim($string, '/\\'); //strip both forward and back slashes

Ini memastikan portabilitas dari * nix ke Windows , karena saya menganggap pertanyaan ini berkaitan dengan cara menangani jalur.

Dan Lugg
sumber
1
menarik! Namun pada akhirnya saya tersandung di sini tentang rute , bukan jalur
Félix Gagnon-Grenier
1
@ FélixGagnon-Grenier Jawabannya agak lancang sehubungan dengan jalan; OP mungkin memiliki alasan yang sama sekali berbeda. Karena "rute" biasanya bertindak atas "jalur" ( dari beberapa jenis ), semuanya sama pada akhirnya :-)
Dan Lugg
Dalam hal Op memang ingin menghapus pemisah direktori tambahan dari jalur, gunakan konstanta DIRECTORY_SEPARATORsebagai ganti '/\\'.
Jens
@ Jens Saya setuju, namun karena PHP mendukung * nix dan kasus sudut jalur Windows mungkin tidak terpotong.
Dan Lugg
@NorthbornDesign: Apakah Anda punya contoh? Maksud Anda memangkas jalur * nix di Windows, dan sebaliknya, bukan hanya jalur asli?
Jens
4

rtrim Gunakan rtrim karena itu menghormati string yang tidak diakhiri dengan garis miring

Breezer
sumber
2
Kecuali bahwa itu tidak benar-benar menghapus garis miring, tetapi menghapus sebuah string.
pengguna502515
baik saya melewatkan bagian trailing dalam pertanyaan ... Saya membuat kesalahan dan saya secara khusus menulis bahwa itu menghapus semua garis miring
Breezer