文字列PHPから末尾のスラッシュを削除する


回答:


235

確かに、最後の文字がスラッシュであるかどうかを確認してから、そのスラッシュを核にします。

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

別の(おそらくより良い)オプションが使用されますrtrim()-これはすべての末尾のスラッシュを削除ます:

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

すべてのプラットフォームで機能するように、ファイルパスを使用するDIRECTORY_SEPARATOR代わりに使用することもお勧めし'/'ます。
ブラッド

61

これにより、末尾のスラッシュが削除されます。

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

13
これにより末尾のスラッシュがすべて削除されることに注意してください。
ガンボ2010年

24

長い間受け入れられていましたが、関連する検索で私はここでつまずき、「完全性」を付け加えています。rtrim()すばらしいですが、次のように実装されています。

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

* nixからWindowsへの移植性を保証します。これは、この質問はパスの処理に関係していると思います。


1
面白い!しかし、私の終わりに、私はここでつまずいに関するルートではなく、パス
フェリックス・ガニオン-グルニエ

1
@FélixGagnon-Grenierさて、その答えはパスへの懸念があるので、いくぶんばかげています。OPには、まったく異なる理由があった可能性があります。「ルート」は通常「パス」に作用するため(ある種の)、最終的にはすべて同じです:-)
Dan Lugg

Opがパスから末尾のディレクトリセパレータを削除したい場合は、のDIRECTORY_SEPARATOR代わりに定数を使用し'/\\'ます。
イェンス

@Jens同意しますが、PHPは* nixとWindowsパスをサポートしているため、コーナーケースが切り捨てられない場合があります。
Dan Lugg、2016

@NorthbornDesign:例はありますか?ネイティブパスだけでなく、Windowsで* nixパスをトリミングすることを意味しますか?
イェンス

4

rtrim rtrimを 使用すると、文字列が末尾のスラッシュで終了しないことが考慮されます


2
末尾のスラッシュは実際には削除されませんが、文字列の引用符は外されません。
user502515 2010年

まあ、質問の最後の部分を逃しました...私は間違いを犯し、すべてのスラッシュを削除すると具体的に書いた
Breezer

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.