PHP: ตัดข้อความที่ตัดตอนมาโดยใช้ strrpos

รหัส html

หากคุณกำลังทำงานกับ 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 ที่ทำสิ่งนี้ได้หรือไม่ ... ฉันหาไม่พบ

7 คอมเมนต์

  1. 1
  2. 2
  3. 3
  4. 4

    หากเนื้อหา $ เริ่มต้นสั้นกว่า $ maxchars โค้ดที่เขียนจะยังคงมองขวาไปซ้ายเพื่อเว้นวรรคและตัดคำสุดท้ายออก คุณสามารถต่อช่องว่างที่ท้าย $ content หรือทำ if (strlen () ... )

  5. 5

    สิ่งนี้ดูเหมือนจะใช้งานได้ (กล่าวถึงความคิดเห็นก่อนหน้านี้):

    ฟังก์ชั่น showexcerpt ($ content, $ maxchars) {

    ถ้า (strlen ($ content)> $ maxchars) {

    $ content = substr ($ content, 0, $ maxchars);
    $ pos = strrpos ($ content, "");

    ถ้า ($ pos> 0) {
    $ content = substr ($ content, 0, $ pos);
    }

    ส่งคืนเนื้อหา $ "…";

    } else {

    return $ content;

    }

    }

  6. 6

    จะเกิดอะไรขึ้นถ้าอักขระสุดท้ายของเราเป็นอักขระเครื่องหมายวรรคตอนเช่นเครื่องหมายอัศเจรีย์หรือเครื่องหมายคำถาม ขออภัยรหัสนี้จะลบคำทั้งหมดที่อยู่ข้างหน้าอักขระเครื่องหมายวรรคตอนดังกล่าว  

    ฉันคิดว่าคุณควรเขียนบางสิ่งที่มีประสิทธิภาพมากกว่านี้หน่อย

  7. 7

คุณคิดอย่างไร?

ไซต์นี้ใช้ Akismet เพื่อลดสแปม เรียนรู้วิธีการประมวลผลข้อมูลความคิดเห็นของคุณ.