ลบ Trailing Slash จาก String PHP


คำตอบ:


239

แน่นอนเพียงตรวจสอบว่าอักขระตัวสุดท้ายเป็นเครื่องหมายทับหรือไม่จากนั้นจึงเลือกอักขระนั้น

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

ตัวเลือกอื่น (น่าจะดีกว่า) จะใช้rtrim()- ตัวเลือกนี้จะลบเครื่องหมายทับทั้งหมด :

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

1
ฉันขอแนะนำให้ใช้DIRECTORY_SEPARATORแทน'/' ถ้าใช้เส้นทางไฟล์เพื่อให้ใช้ได้กับทุกแพลตฟอร์ม
Brad

63

สิ่งนี้จะลบเครื่องหมายทับต่อท้าย:

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

13
โปรดทราบว่านี้เอาทุกทับต่อท้าย
Gumbo

25

ยอมรับมานานอย่างไรก็ตามในการค้นหาที่เกี่ยวข้องของฉันฉันพบที่นี่และกำลังเพิ่มสำหรับ "ความสมบูรณ์"; rtrim()ดีมาก แต่มีการใช้งานเช่นนี้:

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

ช่วยให้สามารถพกพาจาก* nixไปยังWindowsได้เนื่องจากฉันคิดว่าคำถามนี้เกี่ยวข้องกับการจัดการกับเส้นทาง


1
น่าสนใจ! อย่างไรก็ตามในตอนท้ายของฉันฉันสะดุดที่นี่เกี่ยวกับเส้นทางไม่ใช่เส้นทาง
Félix Gagnon-Grenier

1
@ FélixGagnon-Grenier ดีคำตอบค่อนข้างน่าเกรงใจกับความกังวลเกี่ยวกับเส้นทาง; OP อาจมีเหตุผลที่แตกต่างกันโดยสิ้นเชิง เนื่องจากโดยทั่วไป "เส้นทาง" จะทำงานบน "เส้นทาง" ( บางประเภท ) จึงเหมือนกันทั้งหมดในตอนท้าย :-)
Dan Lugg

ในกรณีที่แย้มยิ้มแน่นอนจะต้องการเอาตัวคั่นไดเรกทอรีต่อท้ายจากเส้นทางให้ใช้อย่างต่อเนื่องแทนDIRECTORY_SEPARATOR '/\\'
Jens

@Jens ฉันเห็นด้วย แต่เนื่องจาก PHP รองรับ * nix และกรณีมุมของเส้นทาง Windows อาจไม่ถูกตัดทอน
Dan Lugg

@NorthbornDesign: คุณมีตัวอย่างไหม? คุณหมายถึงการตัดเส้นทาง * nix บน Windows และในทางกลับกันไม่ใช่แค่เส้นทางดั้งเดิม?
Jens

4

rtrim ใช้ rtrim ทำให้มันเคารพสตริงไม่ได้ลงท้ายด้วยเครื่องหมายทับ


2
ยกเว้นว่าจะไม่ลบเครื่องหมายทับท้ายออกจริงๆ แต่ไม่ต้องใส่เครื่องหมายสตริง
user502515

ฉันพลาดส่วนต่อท้ายในคำถาม ... ฉันทำผิดพลาดและฉันเขียนโดยเฉพาะว่ามันลบเครื่องหมายทับทั้งหมด
Breezer

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.