ตัวอย่างโค้ดต่อไปนี้ เป็นแนวทางการใช้งาน javascript สำหรับ
ตรวจสอบนับจำนวนข้อความที่ต้องการ สำหรับจัดส่ง SMS โดยสามารถนำ
ไปประยุกต์เพิ่มเติมตามต้องการ
การคำนวณจำนวนตัวอักษรในข้อความ SMS ในภาษาไทยและภาษาอังกฤษ
จะแตกต่างกันตามกฎเฉพาะของแต่ละภาษา ดังนี้:
1. ภาษาอังกฤษ (English):
- ใน SMS ส่วนมาก, 1 ข้อความ SMS มีขนาดไม่เกิน 160 ตัวอักษร (รวมเว้นวรรค)
- หากข้อความยาวเกิน 160 ตัวอักษร, จะถือเป็น 2 ข้อความหรือมากกว่า ตามจำนวนตัวอักษรที่มี
2. ภาษาไทย (Thai):
- เนื่องจากภาษาไทยมีอักขระจำนวนมากกว่าภาษาอังกฤษ, ดังนั้น การคำนวณ SMS ในภาษาไทยจะแตกต่าง
- สำหรับภาษาไทย, 1 ข้อความ SMS จะมีขนาดไม่เกิน 70 ตัวอักษร (รวมเว้นวรรค)
- หากข้อความยาวเกิน 70 ตัวอักษร, จะถือเป็น 2 ข้อความหรือมากกว่า ตามจำนวนตัวอักษรที่มี
ดังนั้น, การคำนวณจำนวนข้อความ SMS สำหรับข้อความที่รวมทั้งภาษาอังกฤษและภาษาไทย
จะต้องพิจารณาตามกฎดังกล่าวเพื่อคำนวณได้อย่างถูกต้อง. แต่ละภาษามีการคำนวณต่างกัน
ดังที่กล่าวไว้ข้างต้น และความยาวของข้อความอาจมีผลต่อจำนวนข้อความ SMS ที่ต้องใช้
ในการส่งข้อความนั้นๆด้วย ดังนั้น ควรระมัดระวังในการคำนวณและส่งข้อความที่มีจำนวนอักขระมากๆ
ในภาษาไทยหรือภาษาอังกฤษ.
ตัวอย่างโค้ด
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>SMS Character Count</title> <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet"> <style> .container { margin-top: 50px; } </style> </head> <body> <div class="container"> <div class="row"> <div class="col-md-6"> <div class="form-group"> <label for="textInput">Input Text:</label> <textarea class="form-control" id="textInput" rows="4" oninput="countSMS(this.value)"></textarea> </div> </div> <div class="col-md-6"> <div class="form-group"> <label for="smsCount">SMS Count:</label> <input type="text" class="form-control" id="smsCount" readonly> </div> <div class="form-group"> <label for="charCount">Character Count (with spaces):</label> <input type="text" class="form-control" id="charCount" readonly> </div> <div class="form-group"> <label for="charCountNoSpaces">Character Count (without spaces):</label> <input type="text" class="form-control" id="charCountNoSpaces" readonly> </div> <div class="form-group"> <label for="spaceCount">Space Count:</label> <input type="text" class="form-control" id="spaceCount" readonly> </div> <div class="form-group"> <label for="thaiCharCount">Thai Character Count:</label> <input type="text" class="form-control" id="thaiCharCount" readonly> </div> <div class="form-group"> <label for="englishCharCount">English Character Count:</label> <input type="text" class="form-control" id="englishCharCount" readonly> </div> <div class="form-group"> <label for="language">Language:</label> <input type="text" class="form-control" id="language" readonly> </div> </div> </div> </div> <script> function countSMS(text) { // ช่วงของรหัส Unicode ที่ใช้แทนตัวอักษรภาษาไทย: 0x0E00 - 0x0E7F const thaiRegex = new RegExp("[\u0E00-\u0E7F]", "g"); // นับเฉพาะจำนวนตัวอักษรภาษาไทย รวมช่องว่างด้วย const thaiCharCount = (text.match(thaiRegex) || []).length; // ช่วงของรหัส Unicode ที่ใช้แทนตัวอักษรภาษาอังกฤษ: 0x0020 - 0x007E const englishRegex = new RegExp("[\u0020-\u007E]", "g"); // นับเฉพาะจำนวนตัวอักษรภาษาอังกฤษ รวมช่องว่างด้วย const englishCharCount = (text.match(englishRegex) || []).length; // นับเฉพาะจำนวนช่องว่างในข้อความ const spaceCount = (text.match(/\s/g) || []).length; // ลบช่องว่างออกก่อนนำไปตรวจสอบว่ามีภาษาไทย หรือภาษาอังกฤษ กี่ตัวอักษร const textWithoutSpaces = text.replace(/\s/g, ''); // นับเฉพาะจำนวนตัวอักษรภาษาไทย ไม่รวมช่องว่างด้วย const thaiCharCountNoSpaces = (textWithoutSpaces.match(thaiRegex) || []).length; // นับเฉพาะจำนวนตัวอักษรภาษาอังกฤษ ไม่รวมช่องว่างด้วย const englishCharCountNoSpaces = (textWithoutSpaces.match(englishRegex) || []).length; // นับจำนวนตัวอักษรทั้งหมดในข้อความ รวมช่องว่างด้วย const totalCharCount = thaiCharCountNoSpaces + englishCharCountNoSpaces + spaceCount; // ตรวจสอบภาษา let language; // ค่าพื้นฐานการแยกจำนวน ข้อความ sms ค่าเริ่มต้นเป็น 70 รองรับแบบผสม และภาษาไทยอย่างเดียว let base_calculate = 70; if (thaiCharCountNoSpaces === 0) { // ถ้าไม่มีภาษาไทยเลย language = "English"; // เป็นภาษาอังกฤษอย่างเดียว base_calculate = 160; } else if (englishCharCountNoSpaces === 0) { // ไม่มีภาษาอังกฤษเลย language = "Thai"; // เป็นภาษาไทยอย่างเดียว } else { language = "Mixed"; // เป็นแบบผสมไทย อังกฤษ } // คำนวณจำนวน SMS // ถ้าภาษาไทยใช้: 70, ภาษาอังกฤษใช้: 160 const smsCount = Math.ceil(totalCharCount / base_calculate); // นำค่าไปแสดง document.getElementById("smsCount").value = smsCount; document.getElementById("charCount").value = totalCharCount; document.getElementById("charCountNoSpaces").value = totalCharCount - spaceCount; document.getElementById("spaceCount").value = spaceCount; document.getElementById("thaiCharCount").value = thaiCharCountNoSpaces; document.getElementById("englishCharCount").value = englishCharCountNoSpaces; document.getElementById("language").value = language; } </script> </body> </html>
ตัวอย่างข้อความสำหรับทดสอบ
Hello, how are you? // ภาษาอังกฤษอย่างเดียว สวัสดี ยินดีที่ได้รู้จักครับ // ภาษาไทยอย่างเดียว Hello สวัสดี // แบบผสมไทย อังกฤษ