PHP Conference Japan 2024

mb_regex_encoding

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

mb_regex_encoding設定/取得多位元組正規表達式的字元編碼

說明

mb_regex_encoding(?string $encoding = null): string|bool

設定/取得多位元組正規表達式的字元編碼。

參數

encoding

encoding 參數是字元編碼。如果省略或為 null,則會使用內部字元編碼值。

傳回值

如果設定了 encoding 參數,則成功時返回 true,失敗時返回 false。在此情況下,內部字元編碼「不會」更改。如果省略 encoding 參數,則會返回目前多位元組正規表達式的字元編碼名稱。

更新日誌

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

參見

新增筆記

使用者貢獻的筆記 4 則筆記

GerryH
7 年前
mb_ereg 功能是透過 Oniguruma RegEx 函式庫提供,而不是透過 PCRE。與 mb_list_encodings() 和 mb_encoding_aliases() 相比,mb_regex_encoding() 只支援一部分的編碼名稱。
目前支援以下名稱(不區分大小寫)

UCS-4
UCS-4LE
UTF-32
UTF-32BE
UTF-32LE
UTF-16
UTF-16BE
UTF-16LE
UTF-8
utf8
ASCII
US-ASCII
EUC-JP
eucJP
x-euc-jp
SJIS
eucJP-win
SJIS-win
CP932
MS932
Windows-31J
ISO-8859-1
ISO-8859-2
ISO-8859-3
ISO-8859-4
ISO-8859-5
ISO-8859-6
ISO-8859-7
ISO-8859-8
ISO-8859-9
ISO-8859-10
ISO-8859-13
ISO-8859-14
ISO-8859-15
ISO-8859-16
EUC-CN
EUC_CN
eucCN
gb2312
EUC-TW
EUC_TW
eucTW
BIG-5
CN-BIG5
BIG-FIVE
BIGFIVE
EUC-KR
EUC_KR
eucKR
KOI8-R
KOI8R

此列表混合了基本名稱和別名,適用於 PHP 5.4.45 (Oniguruma lib v4.7.1)、PHP 5.6.31 (v5.9.5)、PHP 7.0.22 (v5.9.6) 和 PHP 7.1.8 (v5.9.6)。請注意不一致之處:mb_regex_encoding() 接受例如基本名稱 'UTF-8' 及其唯一別名 'utf8',但不接受別名 'utf16'、'utf32' 或 'latin1'。

此外請注意,mb_list_encodings() 也無法辨識 ISO/IEC 8859-15:1999 (包含 0xA4 上的歐元符號) 的非正式名稱/別名 'latin9'。它只能以 'ISO-8859-15' 或 'ISO_8859-15' 表示,而對於 mb_regex_encoding() 只能以 'ISO-8859-15' 表示。
php dot net at phor dot net
14 年前
請注意,mb_regex_encoding 不支援 mb_list_encodings.php 中列出的所有編碼。

範例

<?php
mb_internal_encoding
('CP936');
mb_regex_encoding('CP936'); # 這行會產生錯誤
?>
code at roberthairgrove dot com
7 年前
即使 CP1252 或 Windows-1252 出現在 mb_list_encodings() 產生的列表中,mb_regex_encoding 仍無法辨識它們為有效的編碼。

雖然支援 ISO-8859-1(也就是「Latin-1」),但它與 Windows 版本的 Latin-1 不同。
匿名
15 年前
要更改 regex_encoding 的演算法
<?php
echo "目前 mb_internal_encoding: ".mb_internal_encoding()."<br />";
echo
"將 mb_internal_encoding 改為 UTF-8<br />";
mb_internal_encoding("UTF-8");
echo
"新的 mb_internal_encoding: ".mb_internal_encoding()."<br />";

echo
"目前 mb_regex_encoding: ".mb_regex_encoding()."<br />";
echo
"將 mb_regex_encoding 改為 UTF-8<br />";
mb_regex_encoding('UTF-8');
echo
"新的 mb_regex_encoding: ".mb_regex_encoding()."<br />";
?>
To Top