PHP – 如何使用 mb_detect_encoding() 檢測字元編碼
在 PHP 中,**mb_detect_encoding()** 用於檢測字元編碼。它可以根據候選列表中的順序檢測字串的字元編碼。此函式在 PHP 4.0.6 或更高版本中受支援。
**mb_detect_encoding()** 在多位元組編碼中非常有用,在多位元組編碼中,並非所有位元組序列都構成有效的字串。如果輸入字串包含此類序列,則該編碼將被拒絕,並且它將檢查下一個編碼。
語法
string mb_detect_encoding(str $string, str $encoding, bool $strcit)
如果沒有其他資訊,自動檢測字元編碼並不完全可靠。可以說,字元編碼檢測類似於在沒有金鑰的情況下解碼加密字串。**content-Type HTTP** 標頭可用於指示與資料一起儲存或傳輸的字元編碼。
引數
**mb_detect_encoding** 函式接受三個引數 -
**$string** - 此引數用於要檢查的字串。
**$encoding** - 此引數用於要按順序嘗試的字元編碼列表。列表可以以任何格式指定,例如字串陣列或僅用逗號分隔的單個字串。如果省略或為空,則使用當前的 detect_order,該 detect_order 由 **mbstring.detect_order** 配置選項或 **mb_detect_order()** 函式設定。
**$strict** - 此引數用於控制當字串在任何列出的編碼中均無效時的行為。如果 strict 設定為 false,則它將返回最接近的匹配編碼。如果 strict 設定為 true,則它將返回 false。
返回值
它返回檢測到的字元編碼,或者如果字串在任何列出的編碼中均無效,則返回 False。
示例 1
不帶 strict 引數的 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
使用 strict 引數的 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"
廣告