PHP Conference Japan 2024

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