ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingเขียนยังไงให้แปลง string การเคาะคานวรรคหลายๆครั้งให้เหลือ 1 ครั้งได้ครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: เขียนยังไงให้แปลง string การเคาะคานวรรคหลายๆครั้งให้เหลือ 1 ครั้งได้ครับ  (อ่าน 1473 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
okgofun
ก๊วนเสียว
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 396



ดูรายละเอียด
« เมื่อ: 28 กันยายน 2007, 03:17:19 »

เขียนยังไงให้แปลง string การเคาะคานวรรคหลายๆครั้งให้เหลือ 1 ครั้งได้ครับ

อย่างเช่น
$str = "สวัสดี
สบายดีใหม                ทำอะไรกันอยู่
        เหงาใหม
  อืมมมๆๆๆๆ

   " ;

ใช้ regular expression ทำยังไงให้ตัดช่องมากๆพวกนั้นให้เหลือเพียงช่องเดียว มีวิธีการใหมครับ  Huh?
บันทึกการเข้า

จะต้องทำให้ได้เดือนละอย่างต่ำ $1,000 แล้วก็ไม่โดนแบน
Kazamatsuri
ก๊วนเสียว
*

พลังน้ำใจ: 5
ออฟไลน์ ออฟไลน์

กระทู้: 319



ดูรายละเอียด
« ตอบ #1 เมื่อ: 28 กันยายน 2007, 03:27:35 »

ereg_replace("\s+", " ", $str);

หรือ

preg_replace("\s+", " ", $str);

ปล. ไม่แน่ใจว่าใช้่ /\s+ รึเปล่านะครับ รอผู้เชี่ยวชาญท่านอื่นมายืนยันล่ะกัน  Tongue
บันทึกการเข้า

kennn
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 149
ออฟไลน์ ออฟไลน์

กระทู้: 1,199



ดูรายละเอียด
« ตอบ #2 เมื่อ: 28 กันยายน 2007, 09:57:33 »

$New_Str=Trim($str);
บันทึกการเข้า

แอร๊ยยยๆๆๆ
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 50
ออฟไลน์ ออฟไลน์

กระทู้: 2,765



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 28 กันยายน 2007, 10:30:44 »

ความรู้ใหม่(เพราะปกติไม่ค่อยสนใจทำแบบนี้ แต่รู้ไว้ก้อดี Cheesy)
บันทึกการเข้า

okgofun
ก๊วนเสียว
*

พลังน้ำใจ: 1
ออฟไลน์ ออฟไลน์

กระทู้: 396



ดูรายละเอียด
« ตอบ #4 เมื่อ: 28 กันยายน 2007, 15:52:56 »

ใช้ trim ได้เหรอครับ มันจะตัดแค่ช่องว่างท้าย string ไม่ใช่เหรอ แต่อันนี้มันเป็นการเคาะให้เป็นช่องว่างมากๆๆๆๆๆๆ ระหว่างข้อความ แต่เริ่มต้นกับสิ้นสุดข้อความมันไม่ใช่ช่องว่างหนะครับ
บันทึกการเข้า

จะต้องทำให้ได้เดือนละอย่างต่ำ $1,000 แล้วก็ไม่โดนแบน
kennn
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 149
ออฟไลน์ ออฟไลน์

กระทู้: 1,199



ดูรายละเอียด
« ตอบ #5 เมื่อ: 28 กันยายน 2007, 18:24:14 »

โอ้วว .. sorry ครับ ไม่เป็นไรเอาใหม่ ลองของคุณ Kazamatsuri ไม่ได้ใช่มะครับ

งั้นเอาของผมไปลอง ดูดิจะปราบได้มัย หุหุหุ

$New_str=eregi_replace(" ", "", $str);
$New_str=eregi_replace(chr(13), "", $New_str);

ถ้ายังไม่ได้ลองใส่อันนี้ไปอีก 1 บรรทัด

$New_str=eregi_replace(chr(10), "", $New_str);

echo $New_str;

chr(10) กับ chr(13) ตัวนี้ไม่แน่ใจครับเป็นค่าของปุ่มไหน chr(10) รู้สึกจะเป็นตัวขึ้นบรรทัดใหม่ เทียบได้กับ \n  ส่วน chr(13) ตัวนี้น่าจะเป็นการ Enter หรือไม่ก้อการ Tab ไม่ยืนยันนะครับ เพราะจำไม่ได้แล้ว ยังไงลองดูนะครับ
บันทึกการเข้า

EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 04 ตุลาคม 2007, 18:43:57 »

โอ้วว .. sorry ครับ ไม่เป็นไรเอาใหม่ ลองของคุณ Kazamatsuri ไม่ได้ใช่มะครับ

งั้นเอาของผมไปลอง ดูดิจะปราบได้มัย หุหุหุ

$New_str=eregi_replace(" ", "", $str);
$New_str=eregi_replace(chr(13), "", $New_str);

ถ้ายังไม่ได้ลองใส่อันนี้ไปอีก 1 บรรทัด

$New_str=eregi_replace(chr(10), "", $New_str);

echo $New_str;

chr(10) กับ chr(13) ตัวนี้ไม่แน่ใจครับเป็นค่าของปุ่มไหน chr(10) รู้สึกจะเป็นตัวขึ้นบรรทัดใหม่ เทียบได้กับ \n  ส่วน chr(13) ตัวนี้น่าจะเป็นการ Enter หรือไม่ก้อการ Tab ไม่ยืนยันนะครับ เพราะจำไม่ได้แล้ว ยังไงลองดูนะครับ


แง้ว จขกท. เขาต้องการทำให้เว้นบรรคเยอะๆ เหลือแค่ 1 อันอะ

ereg_replace("\s+", " ", $str);

หรือ

preg_replace("\s+", " ", $str);

ปล. ไม่แน่ใจว่าใช้่ /\s+ รึเปล่านะครับ รอผู้เชี่ยวชาญท่านอื่นมายืนยันล่ะกัน  Tongue

ereg_replace("\s+", " ", $str);
ถูกแล้วครับ

preg_replace("#\s+#", " ", $str);

ต้องมีตัวลิมิตปิดหน้าหลังอะครับ ใช้ # หรือ /  ก็ได้
แต่ต้องปิดหัวท้าย (เฉพาะสำหรับตระกูลคำสั่ง preg ครับ)
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์