หากคุณกำลังทำงานกับ PHP และคุณต้องการแสดงเฉพาะข้อความที่ตัดตอนมาจากข้อความต้นฉบับของคุณและตัดออกเป็นจำนวนอักขระการตัดตอนของคุณอาจดูน่าเกลียดหากทำในสตริงกลาง ฉันต้องเขียนฟังก์ชันเพื่อทำสิ่งนี้ใน ASP และใน ASP.NET ซึ่งโดยทั่วไปจะวนจากอักขระตัวสุดท้ายกลับไปหาช่องว่างสุดท้ายและตัดออก ประเภทที่น่ารังเกียจและเกินความสามารถเล็กน้อย คุณสามารถเห็นสิ่งนี้จริงในบ้านของฉัน หน้า โดยที่ฉันระบุเพียง 500 อักขระแรกเท่านั้น
ฉันเตรียมพร้อมอย่างเต็มที่ที่จะพัฒนาฟังก์ชันเดียวกันกับ PHP ในวันนี้ แต่พบ (ตามปกติ) ว่า PHP มีฟังก์ชันที่ทำอยู่แล้ว strrpos.
รหัสเก่าจะใช้สตริงย่อย ($ content) จากอักขระตัวแรกไปจนถึงจำนวนอักขระสูงสุดที่คุณต้องการ ($ maxchars):
$ content = substr ($ content, 0, $ maxchars); echo $ เนื้อหา;
รหัสใหม่:
$ content = substr ($ content, 0, $ maxchars); $ pos = strrpos ($ content, ""); ถ้า ($ pos> 0) {$ content = substr ($ content, 0, $ pos); } เนื้อหา echo $;
ดังนั้นโค้ดใหม่จะตัดเนื้อหาที่จำนวนอักขระสูงสุดที่คุณต้องการออกก่อน อย่างไรก็ตามขั้นตอนต่อไปคือการมองหาช่องว่างสุดท้าย (”“) ในเนื้อหา $ pos จะกลายเป็นตำแหน่งนั้น ตอนนี้ฉันมั่นใจว่ามีช่องว่างในเนื้อหาจริงๆโดยถามว่า $ pos> 0 หากไม่มีก็จะตัดเนื้อหาตามจำนวนอักขระที่ฉันร้องขอ หากมีช่องว่างก็จะตัดเนื้อหาของฉันออกอย่างสง่างาม
นี่เป็นวิธีที่ดีในการใช้การรวมกันของจำนวนอักขระสูงสุดและการตัดออกที่คำ หวังว่าคุณจะชอบ!
และฉันแน่ใจว่าฉันจะพบว่ามีฟังก์ชัน ASP.NET ที่ทำสิ่งนี้ได้หรือไม่ ... ฉันหาไม่พบ
Doug ใน C # คุณสามารถใช้เมธอด String.LastIndexOf เพื่อทำสิ่งที่ strrpos ทำใน PHP
ฉันรู้ว่ามันจะเกิดขึ้น! 🙂
ขอบคุณ Abhijit!
ยอดเยี่ยม! สิ่งที่ฉันกำลังมองหา ขอบคุณ.
หากเนื้อหา $ เริ่มต้นสั้นกว่า $ maxchars โค้ดที่เขียนจะยังคงมองขวาไปซ้ายเพื่อเว้นวรรคและตัดคำสุดท้ายออก คุณสามารถต่อช่องว่างที่ท้าย $ content หรือทำ if (strlen () ... )
สิ่งนี้ดูเหมือนจะใช้งานได้ (กล่าวถึงความคิดเห็นก่อนหน้านี้):
ฟังก์ชั่น showexcerpt ($ content, $ maxchars) {
ถ้า (strlen ($ content)> $ maxchars) {
$ content = substr ($ content, 0, $ maxchars);
$ pos = strrpos ($ content, "");
ถ้า ($ pos> 0) {
$ content = substr ($ content, 0, $ pos);
}
ส่งคืนเนื้อหา $ "…";
} else {
return $ content;
}
}
จะเกิดอะไรขึ้นถ้าอักขระสุดท้ายของเราเป็นอักขระเครื่องหมายวรรคตอนเช่นเครื่องหมายอัศเจรีย์หรือเครื่องหมายคำถาม ขออภัยรหัสนี้จะลบคำทั้งหมดที่อยู่ข้างหน้าอักขระเครื่องหมายวรรคตอนดังกล่าว
ฉันคิดว่าคุณควรเขียนบางสิ่งที่มีประสิทธิภาพมากกว่านี้หน่อย
เป็นความคิดที่ดี!