Skip to content

Commit 03e9534

Browse files
committed
add details about php8.1 mb-detect-encoding unordered encodings
php/doc-en@7c4b5fb
1 parent 281202a commit 03e9534

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

reference/mbstring/functions/mb-detect-encoding.xml

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!-- $Revision$ -->
3-
<!-- EN-Revision: 34f90a65914c900173f9a42331acc45bc53d8eee Maintainer: hirokawa Status: ready -->
3+
<!-- EN-Revision: 7c4b5fb40ac3149a5b931f1e31b1050ab5eaab7e Maintainer: hirokawa Status: ready -->
44
<!-- CREDITS: takagi,mumumu -->
55
<refentry xml:id="function.mb-detect-encoding" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
66
<refnamediv>
@@ -21,6 +21,12 @@
2121
文字列 <parameter>string</parameter>
2222
のもっとも可能性が高い文字エンコーディングを検出します。
2323
</para>
24+
<para>
25+
PHP 8.1 以降では、
26+
この関数は指定されたテキスト中の有効なテキストエンコーディングのうち、
27+
もっとも正しい可能性が高いものを、経験則を用いて検出します。
28+
そのため、<parameter>encodings</parameter> の順番通りでない場合があります。 
29+
</para>
2430
<para>
2531
追加の情報なしに、
2632
意図した文字エンコーディングを自動で検出する行為は、
@@ -34,7 +40,7 @@
3440
この関数は、全ての文字列が正しいバイト配列とは限らない
3541
マルチバイト文字列を指定するともっとも役に立ちます。
3642
入力となる文字列に誤ったバイトが含まれていた場合、
37-
そのエンコーディングは採用されず、次のものを試します
43+
そのエンコーディングは採用されません
3844
</para>
3945

4046
<warning>
@@ -66,7 +72,7 @@
6672
<term><parameter>encodings</parameter></term>
6773
<listitem>
6874
<para>
69-
文字エンコーディングの一覧を試す順番に指定します
75+
試す文字エンコーディングの一覧を指定します
7076
このリストは、文字列の配列または、
7177
カンマ区切りのリストで指定できます。
7278
</para>
@@ -245,9 +251,10 @@ string(10) "ISO-8859-1"
245251
<?php
246252
$str = "\xC4\xA2";
247253
248-
// 3つ全てのエンコーディングに照らして正しい文字列なので、
249-
// 最初のひとつが返されます。
250-
var_dump(mb_detect_encoding($str, ['UTF-8', 'ISO-8859-1', 'ISO-8859-5']));
254+
// 3つ全てのエンコーディングに照らして正しい文字列ですが、
255+
// 最初のひとつが常に返されるとは限りません
256+
var_dump(mb_detect_encoding($str, ['UTF-8']));
257+
var_dump(mb_detect_encoding($str, ['UTF-8', 'ISO-8859-1', 'ISO-8859-5'])); // PHP 8.1 以降では、UTF-8 ではなく ISO-8859-1 が返されます
251258
var_dump(mb_detect_encoding($str, ['ISO-8859-1', 'ISO-8859-5', 'UTF-8']));
252259
var_dump(mb_detect_encoding($str, ['ISO-8859-5', 'UTF-8', 'ISO-8859-1']));
253260
?>
@@ -258,6 +265,7 @@ var_dump(mb_detect_encoding($str, ['ISO-8859-5', 'UTF-8', 'ISO-8859-1']));
258265
<![CDATA[
259266
string(5) "UTF-8"
260267
string(10) "ISO-8859-1"
268+
string(10) "ISO-8859-1"
261269
string(10) "ISO-8859-5"
262270
]]>
263271
</screen>

0 commit comments

Comments
 (0)