5/30/2558

แก้ปัญหาการตัด และนับ คำภาษาไทยใน PHP ด้วย iconv_strlen และ iconv_substr


ในภาษา PHP  เราใช้ function substr() เพื่อการตัดคำใน string และ function strlen()  เพื่อการหาจำนวนตัวอักษรใน string แต่เมื่อลองใช้ function  นี้กับภาษาไทยจะพบว่ามีปัญหา เราสามารถใช้


  • function  iconv_strlen เพื่อนับจำนวนตัวอักษร เช่น 
          echo  iconv_strlen("สวัสดี","UTF-8");  ผลลัพธ์ที่ได้คือ 6
  • function iconv_substr เพื่อตัด string เช่น 
           echo   iconv_substr("สวัสดี",1,2,"UTF-8");

          ผลลัพธ์ที่ได้คือ  "วั" เพราะ เริ่มต้นตัดอักษรตัวที่ 1 ( อักษรตัวแรกคือ 'ส' นับเป็นตัวที่ 0  )

จำไว้ว่า หากเราต้องการนับตัวอักษรภาษาไทย  หรือ ตัดคำภาษาไทยโดยใช้ PHP ให้ใช้ function iconv_strlen และ function iconv_substr เพื่อไม่ให้เกิดปัญหา


5/04/2558

การสร้าง textbox ที่พิมพ์ได้แต่เฉพาะภาษาอังกฤษ

สำหรับ  text box ที่ให้กรอก username หรือ password หากเราต้องการไม่ให้กรอกตัวอักษรเป็นภาษาไทยได้เราสามารถใช้ jquery ลบตัวอักษรที่เป็นภาษาอังกฤษใน text box ได้ดังนี้

//ให้ใช้งาน jquery ได้
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>

//สร้าง text box ที่มี id เป็น username และกำหนดให้ทำงานที่ function eng_only() เมื่อมีการเปลี่ยนข้อความ
<input type="text"  id="username" onchange="eng_only()" value="" />

<script type="text/javascript">

function eng_only() {
      var temp=$("#username").val();//เก็บข้อความที่พิมพ์ใน text box 
   
      temp=temp.toLowerCase();//เปลี่ยนให้ทุกตัวอักษรเป็น ตัวพิมพ์เล็ก
      
//วน loop แต่ละตัวอักษร เพื่อดูว่าแต่ละตัวอักษรเป็นภาษาไทย หรือภาษาอังกฤษ
for(i=0;i<temp.length;i++)
{
     
 if ((temp[i]=="a")||(temp[i]=="b")||(temp[i]=="c")||(temp[i]=="d")||(temp[i]=="e")||(temp[i]=="f")||(temp[i]=="g")||(temp[i]=="h")||(temp[i]=="i")||(temp[i]=="j")||(temp[i]=="k")||(temp[i]=="l")||(temp[i]=="m")||(temp[i]=="n")||(temp[i]=="o")||(temp[i]=="p")||(temp[i]=="q")||(temp[i]=="r")||(temp[i]=="s")||(temp[i]=="t")||(temp[i]=="u")||(temp[i]=="v")||(temp[i]=="w")||(temp[i]=="x")||(temp[i]=="y")||(temp[i]=="z")||(temp[i]=="z")||(temp[i]=="0")||(temp[i]=="1")||(temp[i]=="2")||(temp[i]=="3")||(temp[i]=="4")||(temp[i]=="5")||(temp[i]=="6")||(temp[i]=="7")||(temp[i]=="8")||(temp[i]=="9")||(temp[i]=="!")||(temp[i]=="@")||(temp[i]=="#")||(temp[i]=="$")||(temp[i]=="%")||
(temp[i]=="^")||(temp[i]=="&")||(temp[i]=="*")||(temp[i]=="(")||(temp[i]==")")||(temp[i]=="_")||(temp[i]=="+")||(temp[i]=="-")||(temp[i]=="=")||(temp[i]=="{")||(temp[i]=="}")||(temp[i]=="[")||(temp[i]=="]")||(temp[i]=="|")||(temp[i]=="/")||(temp[i]=="\"")||(temp[i]=="'")||(temp[i]==":")||(temp[i]==";")||(temp[i]=="<")||(temp[i]==">"))
 {
      
 }
 else
 {
     $("#username").val($("#username").val().replace(temp[i],""));//ลบตัวอักษรที่ไม่ใช่ภาษาอังกฤษออก
 }

}

    }

</script>