ตัวอย่าง การตรวจสอบนับจำนวนข้อความ SMS ด้วย javascript

บทความใหม่ เดือนที่แล้ว โดย Ninenik Narkdee
sms นับsms นับข้อความ

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ sms นับsms นับข้อความ

ดูแล้ว 510 ครั้ง


ตัวอย่างโค้ดต่อไปนี้ เป็นแนวทางการใช้งาน 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 สวัสดี  // แบบผสมไทย อังกฤษ




กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ











URL สำหรับอ้างอิง





คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )







เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ