ใน PHP mb_detect_encoding() ใช้สำหรับตรวจจับการเข้ารหัสอักขระ สามารถตรวจจับการเข้ารหัสอักขระสำหรับสตริงจากรายการตัวเลือกที่เรียงลำดับได้ ฟังก์ชันนี้รองรับในเวอร์ชัน PHP 4.0.6 หรือสูงกว่า
mb_detect_encoding() มีประโยชน์ในการเข้ารหัสแบบหลายไบต์ โดยที่ลำดับของไบต์ไม่ได้ทั้งหมดจะสร้างสตริงที่ถูกต้อง หากสตริงอินพุตมีประเภทของลำดับดังกล่าว การเข้ารหัสนั้นจะถูกปฏิเสธและจะตรวจสอบการเข้ารหัสถัดไป
ไวยากรณ์
string mb_detect_encoding(str $string, str $encoding, bool $strcit)
การตรวจจับการเข้ารหัสอักขระอัตโนมัติไม่น่าเชื่อถือโดยสิ้นเชิงหากไม่มีข้อมูลเพิ่มเติม เราสามารถพูดได้ว่าการตรวจจับการเข้ารหัสอักขระคล้ายกับการถอดรหัสสตริงที่เข้ารหัสโดยไม่มีคีย์ ประเภทเนื้อหา HTTP ส่วนหัวสามารถใช้เป็นตัวบ่งชี้การเข้ารหัสอักขระที่จัดเก็บหรือส่งไปกับข้อมูลได้
พารามิเตอร์
mb_detect_encoding ฟังก์ชั่นยอมรับสามพารามิเตอร์ -
-
$string − พารามิเตอร์นี้ใช้สำหรับสตริงที่กำลังตรวจสอบ
-
$encoding − พารามิเตอร์นี้ใช้สำหรับรายการการเข้ารหัสอักขระเพื่อลองตามลำดับ รายการอาจระบุในรูปแบบใดก็ได้ เช่น อาร์เรย์ของสตริงหรือสตริงเดียวที่คั่นด้วยเครื่องหมายจุลภาค ในกรณีที่การเข้ารหัสถูกละเว้นหรือเป็นโมฆะ ดังนั้น detect_order ปัจจุบันจะถูกตั้งค่าด้วย mbstring.detect_order ตัวเลือกการกำหนดค่าหรือ mb_detect_order() จะถูกใช้งาน
-
$เข้มงวด − พารามิเตอร์นี้ใช้เพื่อควบคุมพฤติกรรมเมื่อสตริงไม่ถูกต้องในการเข้ารหัสใดๆ ที่ระบุไว้ หากการเข้มงวดถูกตั้งค่าเป็นเท็จ ก็จะส่งคืนการเข้ารหัสที่ตรงกันที่ใกล้เคียงที่สุด หากการเข้มงวดถูกตั้งค่าเป็น true มันจะคืนค่าเท็จ
คืนค่า
ส่งคืนการเข้ารหัสอักขระที่ตรวจพบ หรือคืนค่า False หากสตริงไม่ถูกต้องในการเข้ารหัสใดๆ ที่ระบุไว้
ตัวอย่างที่ 1
mb_detect_encoding() ฟังก์ชันที่ไม่มีพารามิเตอร์ที่เข้มงวด
<?php $string=""; // It detect char encoding with current detect_order echo mb_detect_encoding($string); // auto is expanded according to mbstring.language echo mb_detect_encoding($string, "auto"); // Specify encodings echo mb_detect_encoding($string, "JIS, eucjp-win, sjis-win"); // Use array to specify "encodings" parameter $array_encoding = [ "ASCII", "JIS", "EUC-JP" ]; echo mb_detect_encoding($string, $array_encoding); ?>
ผลลัพธ์
ASCIIASCIIJISASCII
ตัวอย่างที่ 2
ฟังก์ชัน mb_detect_encoding() โดยใช้พารามิเตอร์ที่เข้มงวด
<?php // 'áéóú' encoded in ISO-8859-1 $string = "\xxE11\xE9\xF3\xxFA"; // UTF-8 is considered a closer match var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8'], false)); var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8'], true)); //strict parameter does not change the result, if it finds a valid encoding var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8', 'ISO-8859-1'], false)); var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8', 'ISO-8859-1'], true)); ?>
ผลลัพธ์
string(5) "UTF-8" bool(false) string(10) "ISO-8859-1" string(10) "ISO-8859-1"