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

เริ่มโดย okgofun, 28 กันยายน 2007, 03:17:19

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

okgofun

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

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

   " ;

ใช้ regular expression ทำยังไงให้ตัดช่องมากๆพวกนั้นให้เหลือเพียงช่องเดียว มีวิธีการใหมครับ  ???
จะต้องทำให้ได้เดือนละอย่างต่ำ $1,000 แล้วก็ไม่โดนแบน

Kazamatsuri

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

หรือ

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

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

kennn

[direct=https://www.strikeprofx.com/th/]StrikeProFx โบรกเกอร์ Forex ฝาก-ถอนรวดเร็ว[/direct]
[direct=https://www.strikeprofx.com/]StrikeProFx Best Forex Broker Fast Deposit&Withdraw[/direct]

แอร๊ยยยๆๆๆ

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

okgofun

ใช้ trim ได้เหรอครับ มันจะตัดแค่ช่องว่างท้าย string ไม่ใช่เหรอ แต่อันนี้มันเป็นการเคาะให้เป็นช่องว่างมากๆๆๆๆๆๆ ระหว่างข้อความ แต่เริ่มต้นกับสิ้นสุดข้อความมันไม่ใช่ช่องว่างหนะครับ
จะต้องทำให้ได้เดือนละอย่างต่ำ $1,000 แล้วก็ไม่โดนแบน

kennn

โอ้วว .. 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 ไม่ยืนยันนะครับ เพราะจำไม่ได้แล้ว ยังไงลองดูนะครับ
[direct=https://www.strikeprofx.com/th/]StrikeProFx โบรกเกอร์ Forex ฝาก-ถอนรวดเร็ว[/direct]
[direct=https://www.strikeprofx.com/]StrikeProFx Best Forex Broker Fast Deposit&Withdraw[/direct]

EThaiZone

อ้างถึงจาก: 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 ไม่ยืนยันนะครับ เพราะจำไม่ได้แล้ว ยังไงลองดูนะครับ


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

อ้างถึงจาก: Kazamatsuri ใน 28 กันยายน 2007, 03:27:35
ereg_replace("\s+", " ", $str);

หรือ

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

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

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

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

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