function ตัดคำแบบสิ้นคิด
945 viewsadmin บ.ลูกค้า: ทำไมกรอก form สมัครงานแล้วมันไม่ขึ้นบรรทัดใหม่หล่ะ
admin บ.ลูกค้า: ทำไม post webboard แล้วมันไม่ขึ้นบรรทัดใหม่หล่ะ หน้าจอกว้างเกิน print ไมได้
ข้อมูลตัวอย่างที่เขา post เข้ามา test พิมพ์แบบให้ยาวเป็น กิโลเมตร เลย
(ตัวอย่างขอขึ้นบรรทัดนะครับไม่งั้นไม่สวย)
111111111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111111111
ต้นตอของปัญหาคือ browser (IE,FireFox,ฯลฯ) มันไม่เจอช่องว่างระหว่างคำทำให้
มันตัดขึ้นบรรทัดใหม่ไม่ได้
ทำไมถึงชอบ test case นี้จัง ส่วนตัวผมคิดว่าถึงจะพิมพ์ไทย ยังไงมัน
ก็ต้องเว้นวรรคกันบ้าง พอเจอคน test แบบนี้ทีไรรู้สึกขัดใจยังไงพิกล มันทนไม่ไหว
จริงอยู่ว่า case แบบนี้อาจเกิดขึ้นได้บ้างในกรณี กรอกเพลิน จนลืมเว้นวรรค
แต่ถ้ามองในความเป็นจริงแล้ว ถ้าผมจะไปกรอกฟอร์มสมัครงาน หรือ post กระทู้
ถ้าไม่ใช่เพื่อมาป่วนให้มันตัดคำไม่ได้ขึ้นหน้ายาวๆ แล้วผมก็ไม่มี
เหตุผลที่จะกรอกให้ยาวขนาดนั้น เพราะอะไร คิดง่ายๆ ถ้าคุณเป็นเจ้าของบ. รับสมัครงาน
เจอคนพิพม์ประวัติแนะนำตัวเองยาวเป็นกิโลโดยไม่เคาะวรรคเลยคุณจะคิดยังไง
แต่เหนือสิ่งอื่นใด ช่างมันใครจะคิดไง ลูกค้าอยากได้เราก็ไม่ขัดใจ
เลยเป็นที่มาของ function ตัดคำแบบสิ้นคิด นี้ ซึ่งแก้ไขโดยการเติม tag <wbr>
เข้าไปเพื่อให้ browser ตัดคำได้สวยงาม
ASP
Dim strString strString = "A01234567890123456789012345678901234567890123456789Z" Response.Write(addWbr(strString)) Function addWbr(byval strString) Dim intStringLen, intCount, strSingleString, strNewString intStringLen = len(strString) For intCount = 1 to intStringLen strSingleString = Mid(strString,intCount,1) strNewString = strNewString & strSingleString & "<wbr>" Next addWbr = strNewString End Function
PHP (เลียนแบบ asp ด้านบน)
$strString = "A01234567890123456789012345678901234567890123456789Z"; echo addWbr($strString); Function addWbr($strString) { $intStringLen = strlen($strString) - 1; for ($intCount=0;$intCount<=$intStringLen;$intCount++) { $strSingleString = substr($strString,$intCount,1); $strNewString .= "$strSingleString<wbr>"; } return $strNewString; }
PHP (เขียนอีกแบบ)
$strString = "A01234567890123456789012345678901234567890123456789Z"; echo addWbr($strString); Function addWbr($strString) { $strStrings = preg_split("//", $strString, -1, PREG_SPLIT_NO_EMPTY); foreach ($strStrings as $strSingleString) { $strNewString .= "$strSingleString<wbr>"; } return $strNewString; }
* ทิ้งท้ายไว้ว่าใครจะเอาไปใช้ระวัง validate W3C ไม่ผ่านเพราะ <wbr> นะครับ
No Comments »
RSS feed for comments on this post. TrackBack URL