Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,028

HOME > PHP > PHP Forum > ข้อแตกต่างสำหรับการตรวจสอบภาษาไทย ด้วย regular expression ด้วย PHP และ Javascript



 

ข้อแตกต่างสำหรับการตรวจสอบภาษาไทย ด้วย regular expression ด้วย PHP และ Javascript

 



Topic : 114917



โพสกระทู้ ( 9,559 )
บทความ ( 2 )



สถานะออฟไลน์




เมื่อวานเจอปัญหาการ ทดสอบอักขระว่า ทั้งหมดเป็น ภาษาไทย หรือไม่
ผมใช้ regular expression ตรวจสอบ โดยใช้คำค้น '/[^ก-๚]/' เพื่อค้นหาอักขระทุกตัวที่ไม่ใช่ ภาษาไทย
โดยตรวจสอบอักษรไทย ด้วย charmap ก็ได้อักษรเริ่มต้นของ utf8 เป็น ก ไก่
และ ตัวสุดท้ายเป็น ๚ ไปรยาล (อาจจะเรียกชื่อผิด คนไทยหรือเปล่าหว่า)
แต่ประกฏว่า ในส่วนของ PHP สระเอ "เ" มันกลับมองเห็นว่าไม่ใช่ภาษาไทย
แต่ใน javascript เห็นเป็นภาษาไทย เลยต้องเขียนโปรแกรม ทดสอบใหม่ ตามข้างล่าง
ใครรู้ที่มาที่ไปของเหตุการณ์ดังกล่าวบ้างไหมครับ แลกเปลี่ยนความรู้กันหน่อย

อักขระใน charmap
thaichar

โค๊ดที่เขียนตรวจสอบอักขระภาษาไทย
Code (PHP)
<?php
$m='';
if(isset($_REQUEST['data'])){
	$nm = $_REQUEST['data'];
	$ln=strlen($nm); 
	for($i=0; $i<$ln; $i++){
		$a = substr($nm, $i, 1);
		if( isset($_REQUEST['chk'])){
			if( preg_match( '/[^ก-๚เ]/', $a)){  // <--------- บันทัดนี้ ใส่ สระ เ เพื่อตรวจสอบเพิ่มเติม 
				$m .=$a.' '.$i. ",";
			}
		}else{
			if( preg_match( '/[^ก-๚]/', $a)){  // <--------- บันทัดนี้ ไม่ต้องใส่ สระ เ
				$m .=$a.' '.$i. ",";
			}
		}
	}
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<script>
function chkem( em ){
	if( em.trim().search(/[^ก-๚]/)!==-1){  // <--------- บันทัดนี้ javascript ผ่านฉลุย
		alert('เฉพาะภาษาไทย:' + em + ' : ' + em.trim().length); 
	}
}
</script>
</head>
<body>
<form>
เช็คสระ เ <input type="checkbox" name="chk" value="1" <?=(isset($_REQUEST['chk'])? 'checked' : '' )?> ><br>
<input type="text" name="data" onChange="chkem( this.value)" value="<?=$nm?>" ><br>
<input type="text" value="<?=$m?>" readonly ><br>
<button>chk</button>
</form>
</body>
</html>




Tag : PHP, JavaScript









ประวัติการแก้ไข
2015-03-07 08:17:05
2015-03-07 08:24:03
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-03-07 08:12:58 By : Chaidhanan View : 3345 Reply : 2
 

 

No. 1



โพสกระทู้ ( 1,458 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook Blogger

น่าจะเป็นเรื่องของ offset

Quote:
Note:
Using offset is not equivalent to passing substr($subject, $offset) to preg_match_all() in place of the subject string,because pattern can contain assertions such as ^, $ or (?<=x). See preg_match() for examples.


ถ้าเป็น preg_match_all() อาจหาตรงตามตาราง Unicode (ยังไม่เทส)
https://www.php.net/manual/en/function.preg-match-all.php

https://stackoverflow.com/questions/1725227/preg-match-and-utf-8-in-php






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-06-03 10:15:26 By : PhrayaDev
 


 

No. 2



โพสกระทู้ ( 4,720 )
บทความ ( 8 )



สถานะออฟไลน์


ลืมใส่ u (utf-8 modifier) หรือเปล่าครับ?

Code (PHP)
<?php
if ($_POST) {
    $char = ($_POST['char'] ?? '');
    $checkResult = preg_match('/[^ก-๚]/u', $char);
}
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <?php
        if (isset($checkResult)) {
            var_dump($checkResult);
        }
        ?>
        <form method="post">
            <input type="text" name="char" value="<?php if (isset($char)) {echo htmlspecialchars($char, ENT_QUOTES);} ?>" autocomplete="off">
            <button type="submi">Submit</button>
        </form>
    </body>
</html>


เกมส์ -> 0
เกมส์abc -> 1


ประวัติการแก้ไข
2020-06-03 20:35:11
2020-06-03 20:35:27
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2020-06-03 14:30:44 By : mr.v
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ข้อแตกต่างสำหรับการตรวจสอบภาษาไทย ด้วย regular expression ด้วย PHP และ Javascript
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่