ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: okgofun ที่ 28 กันยายน 2007, 03:17:19



หัวข้อ: เขียนยังไงให้แปลง string การเคาะคานวรรคหลายๆครั้งให้เหลือ 1 ครั้งได้ครับ
เริ่มหัวข้อโดย: okgofun ที่ 28 กันยายน 2007, 03:17:19
เขียนยังไงให้แปลง string การเคาะคานวรรคหลายๆครั้งให้เหลือ 1 ครั้งได้ครับ

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

   " ;

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


หัวข้อ: Re: เขียนยังไงให้แปลง string การเคาะคานวรรคหลาũ
เริ่มหัวข้อโดย: Kazamatsuri ที่ 28 กันยายน 2007, 03:27:35
ereg_replace("\s+", " ", $str);

หรือ

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

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


หัวข้อ: Re: เขียนยังไงให้แปลง string การเคาะคานวรรคหลายๆครั้งให้เหลือ 1 ครั้งได้ครับ
เริ่มหัวข้อโดย: kennn ที่ 28 กันยายน 2007, 09:57:33
$New_Str=Trim($str);


หัวข้อ: Re: เขียนยังไงให้แปลง string การเคาะคานวรรคหลายๆครั้งให้เหลือ 1 ครั้งได้ครับ
เริ่มหัวข้อโดย: แอร๊ยยยๆๆๆ ที่ 28 กันยายน 2007, 10:30:44
ความรู้ใหม่(เพราะปกติไม่ค่อยสนใจทำแบบนี้ แต่รู้ไว้ก้อดี :D)


หัวข้อ: Re: เขียนยังไงให้แปลง string การเคาะคานวรรคหลายๆครั้งให้เหลือ 1 ครั้งได้ครับ
เริ่มหัวข้อโดย: okgofun ที่ 28 กันยายน 2007, 15:52:56
ใช้ trim ได้เหรอครับ มันจะตัดแค่ช่องว่างท้าย string ไม่ใช่เหรอ แต่อันนี้มันเป็นการเคาะให้เป็นช่องว่างมากๆๆๆๆๆๆ ระหว่างข้อความ แต่เริ่มต้นกับสิ้นสุดข้อความมันไม่ใช่ช่องว่างหนะครับ


หัวข้อ: Re: เขียนยังไงให้แปลง string การเคาะคานวรรคหลายๆครั้งให้เหลือ 1 ครั้งได้ครับ
เริ่มหัวข้อโดย: kennn ที่ 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 ไม่ยืนยันนะครับ เพราะจำไม่ได้แล้ว ยังไงลองดูนะครับ


หัวข้อ: Re: เขียนยังไงให้แปลง string การเคาะคานวรรคหลายๆครั้งให้เหลือ 1 ครั้งได้ครับ
เริ่มหัวข้อโดย: EThaiZone ที่ 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+ รึเปล่านะครับ รอผู้เชี่ยวชาญท่านอื่นมายืนยันล่ะกัน  :P

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

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

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