A-AA+then

ช่วยผมด้วยครับ

1,665
ผมพยายามจะบันทึกข้อมูลด้วย ajax โดยรับข้อมูลจาก textarea  แล้วบันทึกลงฐานข้อมูล มันไม่จำพวก enter space bar ผมใช้ preg_replace ผลออกมาก็ยังเหมือนเดิม แต่ถ้าไม่ใช้ ajax มันกลับแสดงผลได้ตรง ช่วยแนะนำด้วยครับ

9 ความคิดเห็น

อาจารย์ช่วนเขียนตัวอย่างฟังชัน preg_replace ที่ใช้ในการแทนที่พวก enter กับ space bar จาก textarea ให้ซักตัวหน่อยครับ
1

อาจารย์ครับ ได้มาแล้วครับ ฟังชันในการทำให้ขึ้นบันทัดใหม่  preg_replace("#\n+#", "<br>",$message); แต่เจอปัญหาใหม่ คือมันไม่แสดงภาษาไทย กลับเป็น %u0E01%u0E01 เต้มไปหมด ผมเอาโค้ด preg_replace('/%u([0-9a-f]{4})/ie', "'&#'.hexdec('').';'", $message); ไปแก้แล้ว แต่ก็ยังไม่หาย รบกวนช่วยผมด้วย แย่เลยครับ หาทั้งคืน
2

มันไม่ต้องแปลงอะไรนิครับ แต่ method ที่ใช้ต้องเป็น POST น่ะครับ
3

method นี้ หมายถึงตรงฟอร์ม หรือ ตรง โค้ด ajax ครับ
4

ลองเอาข้อมูลที่บันทึกได้ลงใน db มาดู

ปกติผมจะแปลง ตัวอักษรขึ้นบรรทัดใหม่เป็น \r และ \n

str_replace(array("\r", "\n"), array('\r', '\n'), $data);

เวลาจะแสดง ก็ทำกลับกันครับ
5

อาจารย์ครับ พอส่งผ่านฟอร์มอาแจกไป มันไม่จำค่าพวก \n เลยครับ
ตัวนี้ครับ "สวัสดีพี่น้อง ทานข้าวหรือยัง" ตรงช่องว่าง ที่จริงผม enter ครับ มันไม่ยอมแปลงให้
6

Ajax ครับ
req.open("POST", url, true);
7

555+++

มันไม่เกี่ยวกันหรอกถ้างั้น

ลอง view source ดูว่าตรงข้อความมันขึ้นบรรทัดใหม่มั้ย

บราวเซอร์มันไม่รู้จักตัวอักษรขึ้นบรรทัดใหม่ มันรู้จักแต่ <br /> ก็ให้แปลงตัวอักษรขึ้นบรรทัดใหม่เป็น <br /> ก็จบ

nl2br($data);

ใช้ฟังกชั่นนี้ตอนแสดงผลนะ ตอนเก็บลง db ให้เก็บไปตามปกติ

เรื่องของเรื่อง ตอบกันหลายกระทู้ก็เพราะคำถามไม่ได้วิเคราะห์มาก่อน ว่าปัญหามันอยู่ที่ตรงไหน เลยทำให้ตั้งคำถามไม่ตรงจุด
8

9
^