Computer >> Máy Tính >  >> Lập trình >> PHP

PHP - Cách phát hiện mã hóa ký tự bằng mb_detect_encoding ()

Trong PHP, mb_detect_encoding () được sử dụng để phát hiện mã hóa ký tự. Nó có thể phát hiện mã hóa ký tự cho một chuỗi từ danh sách các ứng cử viên có thứ tự. Chức năng này được hỗ trợ trong phiên bản PHP 4.0.6 trở lên.

mb_detect_encoding () hữu ích với mã hóa nhiều byte, trong đó không phải tất cả các chuỗi byte đều tạo thành một chuỗi hợp lệ. Nếu chuỗi đầu vào chứa loại chuỗi như vậy, thì mã hóa đó sẽ bị từ chối và nó sẽ kiểm tra mã hóa tiếp theo.

Cú pháp

string mb_detect_encoding(str $string, str $encoding, bool $strcit)

Tự động phát hiện mã hóa ký tự không hoàn toàn đáng tin cậy nếu không có một số thông tin bổ sung. Chúng ta có thể nói rằng việc phát hiện mã hóa ký tự tương tự như việc giải mã một chuỗi mã hóa mà không có khóa. A HTTP loại nội dung tiêu đề có thể được sử dụng để chỉ báo mã hóa ký tự được lưu trữ hoặc truyền cùng với dữ liệu.

Tham số

mb_detect_encoding hàm chấp nhận ba tham số -

  • $ string - Tham số này được sử dụng cho chuỗi đang được kiểm tra.

  • Mã hóa $ - Tham số này được sử dụng cho danh sách mã hóa ký tự để thử theo thứ tự. Danh sách có thể được chỉ định ở bất kỳ định dạng nào như một mảng chuỗi hoặc chỉ một chuỗi đơn được phân tách bằng dấu phẩy. Trong trường hợp mã hóa bị bỏ qua hoặc rỗng, thì detector hiện tại được đặt bằng mbstring.detect_order tùy chọn cấu hình hoặc mb_detect_order () chức năng sẽ được sử dụng.

  • $ nghiêm ngặt - tham số này được sử dụng để kiểm soát hành vi khi chuỗi không hợp lệ trong bất kỳ bảng mã nào được liệt kê. Nếu giá trị nghiêm ngặt được đặt thành false, thì nó sẽ trả về mã hóa phù hợp nhất. Nếu giá trị nghiêm ngặt được đặt thành true, nó sẽ trả về giá trị false.

Giá trị trả lại

Nó trả về mã hóa ký tự đã phát hiện hoặc trả về False nếu chuỗi không hợp lệ trong bất kỳ mã hóa nào được liệt kê.

Ví dụ 1

hàm mb_detect_encoding () không có tham số nghiêm ngặt

<?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);
?>

Đầu ra

ASCIIASCIIJISASCII

Ví dụ 2

hàm mb_detect_encoding () sử dụng tham số nghiêm ngặt.

<?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));
?>

Đầu ra

string(5) "UTF-8"
bool(false)
string(10) "ISO-8859-1"
string(10) "ISO-8859-1"