PHP – 如何使用 mb_detect_encoding() 检测字符编码

在 PHP 中,mb_detect_encoding()用于检测字符编码。它可以从候选的有序列表中检测字符串的字符编码。PHP 4.0.6 或更高版本支持此功能。

mb_detect_encoding()对于多字节编码很有用,其中并非所有字节序列都形成有效字符串。如果输入字符串包含这种类型的序列,则该编码将被拒绝,并将检查下一个编码。

语法

string mb_detect_encoding(str $string, str $encoding, bool $strcit)

如果没有一些附加信息,字符编码的自动检测并不完全可靠。我们可以说字符编码检测类似于在没有密钥的情况下解码加密字符串。甲内容类型的HTTP报头可以被用于字符的指示了编码存储的或与该数据传输。

参数

该mb_detect_encoding函数接受三个参数-

  • $string - 此参数用于正在检查的字符串。

  • $encoding - 此参数用于按顺序尝试的字符编码列表。该列表可以以任何格式指定,例如字符串数组或仅由逗号分隔的单个字符串。如果编码被省略或为空,则将使用mbstring.detect_order配置选项或mb_detect_order()函数设置当前的detect_order 。

  • $strict - 当字符串在任何列出的编码中无效时,此参数用于控制行为。如果strict设置为false,那么它将返回最接近的匹配编码。如果strict设置为true,它将返回false。

返回值

它返回检测到的字符编码,或者如果字符串在任何列出的编码中都无效,则返回 False。

示例 1

mb_detect_encoding() 没有严格参数的函数

<?php

   $string="";

   // 它使用当前的detect_order检测字符编码

   echo mb_detect_encoding($string);

   // auto 根据 mbstring.language 展开

   echo mb_detect_encoding($string, "auto");

   // 指定编码

   echo mb_detect_encoding($string, "JIS, eucjp-win, sjis-win");

   // Use array to specify "encodings" parameter

   $array_encoding = [

      "ASCII",

      "JIS",

      "EUC-JP"

   ];

   echo mb_detect_encoding($string, $array_encoding);

?>

输出结果
ASCIIASCIIJISASCII

示例 2

mb_detect_encoding() 函数使用严格参数。

<?php

   // 在 ISO-8859-1 中编码的“áéóú”

   $string = "\xxE11\xE9\xF3\xxFA";

   // UTF-8 被认为更接近

   var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8'], false));

   var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8'], true));

   //如果找到有效的编码,严格参数不会改变结果

   var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8', 'ISO-8859-1'], false));

   var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8', 'ISO-8859-1'], true));

?>

输出结果
string(5) "UTF-8"

bool(false)

string(10) "ISO-8859-1"

string(10) "ISO-8859-1"

以上是 PHP – 如何使用 mb_detect_encoding() 检测字符编码 的全部内容, 来源链接: utcz.com/z/355908.html

回到顶部