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 现在可以为空。

参见

添加注释

用户贡献的注释 5 个注释

GerryH
6 年前
mb_ereg 功能通过 Oniguruma RegEx 库提供,而不是通过 PCRE。mb_regex_encoding() 仅支持与 mb_list_encodings() 和 mb_encoding_aliases() 相比的编码名称子集。
当前支持以下名称(不区分大小写)

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
13 年前
注意,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 不同。
Anonymous
15 年前
要更改 regex_encodign 的算法
<?php
echo "current mb_internal_encoding: ".mb_internal_encoding()."<br />";
echo
"changing mb_internal_encoding to UTF-8<br />";
mb_internal_encoding("UTF-8");
echo
"new mb_internal_encoding: ".mb_internal_encoding()."<br />";

echo
"current mb_regex_encoding: ".mb_regex_encoding()."<br />";
echo
"changing mb_regex_encoding to UTF-8<br />";
mb_regex_encoding('UTF-8');
echo
"new mb_regex_encoding: ".mb_regex_encoding()."<br />";
?>
zl at zl dot hu
15 年前
设置和获取时的返回值不同

<?php
echo mb_regex_encoding();
// 返回编码名称作为字符串
?>

<?php
echo mb_regex_encoding("UTF-8");
// 返回 true(成功)或 false 作为布尔值
?>
To Top