現在の位置: ホーム> 最新記事一覧> MB_GET_INFO関数とMB_DETECT_ENCODING関数の違い

MB_GET_INFO関数とMB_DETECT_ENCODING関数の違い

gitbox 2025-05-11

PHPのMbString拡張機能は、マルチバイト文字列を扱う際に多くの非常に実用的な機能を提供します。その中で、 MB_GET_INFO()およびMB_DETECT_ENCODING()は、初心者と混乱することがよくあります。それらはすべてマルチバイト文字エンコードに関連していますが、機能はまったく異なります。今日は、それらの違いと該当するシナリオを慎重に確認します。

1。MB_GET_INFO()は何をしますか?

MB_GET_INFO()は、現在のMBSTring環境の構成情報を取得するために使用される関数です。デフォルトの内部エンコード、HTTP入力/出力エンコード、現在の言語設定など、エンコード設定に関する多くの詳細を説明できます。

文法:

 mb_get_info(string $type = null): array|string|false

使用例:

 <?php
// すべての構成情報を取得します
$info = mb_get_info();
print_r($info);

// 現在の内部コードを取得します
$internalEncoding = mb_get_info("internal_encoding");
echo "内部コードはです: " . $internalEncoding;
?>

実行の結果は、次のようなものかもしれません(部分的):

 Array
(
    [internal_encoding] => UTF-8
    [http_output] => UTF-8
    [http_input] => pass
    [language] => neutral
    ...
)

現在のデフォルトエンコードがUTF-8であるかどうかを確認したいなど、特定のアイテムのみに興味がある場合、この機能は非常に便利です。

2。MB_DETECT_ENCODING()は何をしますか?

mb_detect_encoding()は別の方法であり、文字列のエンコードを推測するために使用されます。これは、ユーザーによってアップロードされたファイル、フォームデータ、クローラーがキャッチしたWebコンテンツなど、未知のソースから文字列を受信する場合、非常に便利なツールです。

文法:

 mb_detect_encoding(string $string, array|string|null $encodings = null, bool $strict = false): string|false

使用例:

 <?php
// Webページをcraうとします
$content = file_get_contents("https://gitbox.net/page.html");

// エンコーディングを検出してみてください
$encoding = mb_detect_encoding($content, ["UTF-8", "GBK", "ISO-8859-1"]);
echo "検出されたエンコードはです: " . $encoding;
?>

また、厳密なモードがエンコーディングをより厳密に一致させることもできます。

 $encoding = mb_detect_encoding($content, ["UTF-8", "GBK"], true);

3。それらの違いの概要

機能ポイントmb_get_info() mb_detect_encoding()
効果エンコード環境構成を取得します文字列の実際のエンコードを検出します
パラメーターオプションのパラメーターは、返品コンテンツを決定します文字列を渡す必要があり、エンコーディングリストを選択できます。
返品タイプ配列または文字列文字列またはfalse
アプリケーションシナリオエンコード設定、デバッグを確認します不明なエンコードされた文字列を決定します
入力コンテンツとの関係コンテンツを入力する必要はありません文字列コンテンツを提供する必要があります

より簡単な類推は、次のとおりです。

  • MB_GET_INFO()PHPに尋ねて、どのように今どのように設定しましたか?

  • mb_detect_encoding()この文字列のエンコードは何ですか?

4.一般的な誤解

  1. 私は誤ってMB_GET_INFOがあなたに文字列エンコードを伝えることができると思っていました:
    PHPの現在のエンコード設定のみを伝え、あなたがそれに与える文字列をエンコードするものを認識しません。

  2. エンコーディングリストを指定せずに検出します。
    デフォルトでは、 mb_detect_encoding()は内部エンコード順序を使用します。候補者のエンコーディング範囲を明確に知っている場合は、手動で渡すことが最善であり、精度とパフォーマンスを向上させることができます。

5。概要

UTF-8がデフォルトで使用されるかどうかなど、PHPが現在エンコードを設定している方法を知りたい場合は、 mb_get_info()を使用します。
gitbox.netからキャッチされたHTMLピースなど、正体不明のエンコードされたテキストが手元にある場合は、 MB_DETECT_ENCODING()を使用して、UTF-8、GBKなどのかどうかを判断する必要があります。

2つの機能は互いに補完し、独自の義務を果たします。それらをはっきりと理解した後、それらは非常に使いやすいでしょう。