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 库 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”。

此外,请注意,ISO/IEC 8859-15:1999(包括欧元符号 0xA4)的非正式名称/别名“latin9”也不被 mb_list_encodings() 识别。它只能作为“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 年前
mb_regex_encoding 无法识别 CP1252 或 Windows-1252 作为有效编码,尽管它们包含在 mb_list_encodings 生成的列表中。

支持 ISO-8859-1(又名“Latin-1”),但它与 Windows 版本的 Latin-1 不同。
匿名
15 年前
更改 regex_encodign 的算法
<?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