2024 年 PHP 日本研討會

mb_detect_order

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_detect_order設定/取得字元編碼偵測順序

說明

mb_detect_order(陣列|字串|null $encoding = null): 陣列|布林值

將自動字元編碼偵測順序設定為 encoding

參數

encoding

encoding 是一個 陣列 或以逗號分隔的字元編碼清單。請參閱 支援的編碼

如果省略 encoding 或設為 null,它會以陣列形式傳回目前的字元編碼偵測順序。

此設定會影響 mb_detect_encoding()mb_send_mail()

mbstring 目前實作下列編碼偵測過濾器。如果下列編碼出現無效的位元組序列,則編碼偵測將會失敗。

UTF-8UTF-7ASCIIEUC-JPSJISeucJP-winSJIS-winJISISO-2022-JP

對於 ISO-8859-*mbstring 一律偵測為 ISO-8859-*

對於 UTF-16UTF-32UCS2UCS4,編碼偵測將會一律失敗。

回傳值

設定編碼偵測順序時,成功會回傳 true,失敗則回傳 false

取得編碼偵測順序時,會回傳一個排序好的編碼陣列。

更新日誌

版本 說明
8.0.0 encoding 現在可以為 null。

範例

範例 #1 mb_detect_order() 範例

<?php
/* 使用列舉清單設定偵測順序 */
mb_detect_order("eucjp-win,sjis-win,UTF-8");

/* 使用陣列設定偵測順序 */
$ary[] = "ASCII";
$ary[] = "JIS";
$ary[] = "EUC-JP";
mb_detect_order($ary);

/* 顯示目前的偵測順序 */
echo implode(", ", mb_detect_order());
?>

範例 #2 顯示無效偵測順序的範例

; Always detect as ISO-8859-1
detect_order = ISO-8859-1, UTF-8

; Always detect as UTF-8, since ASCII/UTF-7 values are 
; valid for UTF-8
detect_order = UTF-8, ASCII, UTF-7

參見

新增註釋

使用者貢獻的註釋 1 則註釋

匿名
9 個月前
對大多數人來說可能很明顯,但
預設的過濾器清單比我預期的短
['ASCII','UTF-8'],以此順序。

大約在 2024 年,全球 60% 的網站宣告字元集為 'UTF-8'
因此,如果您正在試驗 UTF-8 以外的多位元組編碼,則必須指定您的 detect_order,從已實作的過濾器清單中選擇。
To Top