2010-11-30 23 views

cevap

180

Elbette, sadece son karakterin bir eğik çizgi olup olmadığını kontrol edin ve sonra bir tane yapın. - Başka (muhtemelen daha iyi) seçeneği rtrim() kullanarak olurdu

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

bu bir tüm bölü çizgisi kaldırır:

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

+1 İstenen gibi sadece bir * sondaki eğik çizgiyi kaldırmak için. – Gumbo

4

rtrim Kullanım bunun

çizgi bir eğik ile sona doesnt dize saygı neden RTRIM
+2

Ancak, izleyen eğik çizgileri gerçekten kaldırmaz, ancak bir dizeyi ayırır. – user502515

+0

de sorudaki son noktayı özledim ... hata yaptım ve özellikle tüm eğik çizgileri çıkardığını yazdım – Breezer

47

Bu kaldırır sondaki eğik çizgi:

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

Bunun, * tüm * sondaki eğik çizgileri kaldırdığını unutmayın. – Gumbo

22

Uzun kabul Ancak benim ilgili aramalarında burada tökezledi ve "tamlık" için ekliyorum; rtrim() Ancak bu gibi büyük uygulanmaktadır: Ben varsayalım olarak * nix Windows'uniçin, bu soru yolları ile uğraşan ilgilidir den taşınabilirliği sağlar

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

.

+0

ilginç! ancak sonunda * yolları *, yolları değil, –

+1

@ FélixGagnon-Grenier Well ile ilgili olarak tökezledim, cevap yollarla ilgili endişe ile biraz belirsiz; OP'nin tamamen farklı sebepleri olabilir. "Rotalar" tipik olarak "yollar" (* bir çeşit *) üzerinde çalıştığı için, sonuçta hepsi de aynıdır. – Dan

+0

Op gerçekten de bir yol dizini ayırıcıyı bir yoldan kaldırmak istiyorsa, sabit [' DIRECTORY_SEPARATOR'] (http://php.net/manual/en/dir.constants.php) yerine '/ \\'. – Jens