สิ่งนี้อาจดูเหมือนเป็นล่อลวง แต่มั่นใจได้ว่าไม่ใช่ - ฉันได้ค้นหาทั้ง SO และส่วนที่เหลือของเว็บเพื่อหาคำตอบสำหรับปัญหาของฉันและจบลงด้วยการหาวิธีแก้ปัญหาที่ไม่เพียงพอเหมือนเดิม อย่างไรก็ตามมันจะไปที่นี่:
ฉันบันทึกการป้อนข้อมูลของผู้ใช้จาก textarea ไปยังฐานข้อมูล MySQL (ภายในสภาพแวดล้อม WordPress แต่นั่นไม่น่าจะมีความสำคัญกับปัญหานี้ฉันเชื่อ) จะถูกเรียกคืนจากฐานข้อมูลเพื่อแสดงต่อผู้ดูแลระบบในส่วนหลังของไซต์ ปัญหาเกิดขึ้นเมื่อผู้ใช้ส่งข้อความที่มีตัวแบ่งบรรทัด (เช่นกดปุ่ม Enter)
สตริงตัวอย่างอาจมีลักษณะเช่นนี้:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!
Greetings,
Bill
ไม่มีจุดสิ้นสุดของอักขระบรรทัด ("\ n", "\ r" หรือสิ่งที่คล้ายกัน) ในสตริง
ฉันใช้nl2br()
มันเพื่อสร้างเอาต์พุต HTML แต่ยังไม่เพียงพอ ผลลัพธ์ก็คือ:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br />
<br />
Greetings,<br />
Bill
ซึ่งเท่าที่ฉันเข้าใจมันเป็นnl2br()
ผลลัพธ์ที่คาดหวังเมื่อแทรกแท็กและไม่ควรแทนที่การแบ่งบรรทัดในตอนแรก
อย่างไรก็ตามรูปแบบที่ฉันต้องการก็คือ:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /><br />Greetings,<br />Bill
ถ้าสตริงมีอักขระ EOL เช่น "\ n" อยู่ในนั้นฉันจะกดมันด้วยstr_replace()
หรือpreg_replace()
ทำด้วย แต่ฉันไม่มีเงื่อนงำอะไรที่จะให้ฟีดอย่างใดอย่างหนึ่งของฟังก์ชั่นเหล่านั้นถ้าไม่มีตัวอักษรที่นั่น ในที่แรก.
ฉันสามารถเข้าถึงฟิลด์ที่เกี่ยวข้องในฐานข้อมูลได้ด้วยตนเองกด Backspace สำหรับทุก ๆ การแบ่งบรรทัดและสิ่งที่ฉันต้องการจะทำภายหลังเมื่อสตริงทำงาน ดังนั้นฉันรู้ว่าฉันต้องการรูปแบบข้างต้น