Loại bỏ dấu gạch chéo khỏi chuỗi PHP


101

Có thể xóa dấu gạch chéo /khỏi chuỗi bằng PHP không?

Câu trả lời:


235

Chắc chắn rồi, chỉ cần kiểm tra xem ký tự cuối cùng có phải là dấu gạch chéo hay không và sau đó chọn ký tự đó.

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

Một tùy chọn khác (có thể tốt hơn) sẽ được sử dụng rtrim()- tùy chọn này loại bỏ tất cả các dấu gạch chéo sau:

$string = rtrim($string, '/');

Tôi cũng khuyên bạn nên sử dụng DIRECTORY_SEPARATORthay vì '/' nếu sử dụng đường dẫn tệp để nó hoạt động trên tất cả các nền tảng.
Brad

61

Thao tác này loại bỏ các dấu gạch chéo sau:

$str = rtrim($str, '/');

13
Lưu ý rằng thao tác này sẽ xóa tất cả các dấu gạch chéo.
Gumbo

24

Từ lâu đã chấp nhận, tuy nhiên trong các tìm kiếm liên quan của tôi, tôi đã vấp phải ở đây, và tôi đang thêm "tính đầy đủ"; rtrim()là tuyệt vời, tuy nhiên được triển khai như thế này:

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

Nó đảm bảo tính di động từ * nix sang Windows , vì tôi cho rằng câu hỏi này liên quan đến việc xử lý các đường dẫn.


1
hấp dẫn! Tuy nhiên kết thúc của tôi, tôi tình cờ ở đây liên quan đến tuyến đường , không đường
Félix Gagnon-Grenier

1
@ FélixGagnon-Grenier Chà, câu trả lời hơi tự phụ khi quan tâm đến các con đường; OP có thể có những lý do hoàn toàn khác nhau. Vì "tuyến đường" thường hoạt động trên "đường dẫn" ( thuộc một số loại ) nên cuối cùng thì tất cả đều giống nhau :-)
Dan Lugg

Trong trường hợp Op thực sự muốn xóa dấu phân tách thư mục theo sau khỏi đường dẫn, hãy sử dụng hằng số DIRECTORY_SEPARATORthay vì '/\\'.
Jens

@Jens Tôi đồng ý, tuy nhiên vì PHP hỗ trợ * nix và các trường hợp góc đường dẫn Windows có thể không bị tạm thời.
Dan Lugg,

@NorthbornDesign: Bạn có ví dụ không? Ý của bạn là cắt một đường dẫn * nix trên Windows và ngược lại, không chỉ các đường dẫn gốc?
Jens

4

rtrim Sử dụng rtrim vì nó tôn trọng chuỗi không kết thúc bằng dấu gạch chéo


2
Ngoại trừ việc nó không thực sự loại bỏ dấu gạch chéo, nhưng bỏ dấu ngoặc kép của một chuỗi.
user502515,

tôi cũng bị mất một phần đuôi trong câu hỏi ... Tôi đã phạm sai lầm và tôi đã viết cụ thể là nó loại bỏ tất cả các dấu gạch chéo
Breezer

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.