ホームページ  >  記事  >  バックエンド開発  >  PHPのマルチバイト文字列

PHPのマルチバイト文字列

伊谢尔伦
伊谢尔伦オリジナル
2016-11-21 17:58:371301ブラウズ

はじめに

多くの言語で必要な文字はすべて 8 ビット値に 1 対 1 でマッピングできますが、書面によるコミュニケーションに非常に多くの文字を必要とし、エンコード範囲に含めることができない言語もいくつかあります。バイト内 (バイト バイトは 8 ビットで構成されます。各ビットには、1 または 0 の 2 つの異なる値のみを含めることができます。したがって、1 バイトは 256 個の異なる値、つまり 2 乗の 8 つだけを表すことができます)。 マルチバイト文字エンコーディング スキームは、従来のバイトベースのエンコーディング システムで 256 文字を超える文字を表現するために開発されました。

マルチバイトでエンコードされた文字列を操作 (トリム、分割、結合など) する場合、このエンコード スキームでは 2 つ以上の連続するバイトで 1 つの文字しか表現できないため、特殊な関数を使用する必要があります。 そうしないと、この文字列にマルチバイト文字列を検出できない関数を適用すると、マルチバイト文字の開始位置を検出できずに文字化けが発生し、本来の意味が失われる可能性があります。

mbstring は、PHP でマルチバイト エンコーディングを処理するのに役立つマルチバイト文字列用の関数を提供します。 さらに、mbstring は、使用可能な文字エンコーディング間で変換できます。 便宜上、mbstring は、UTF-8、UCS-2、および多くのシングルバイト エンコーディングなどの Unicode ベースのエンコーディングを処理できるように設計されています。

mbstring はデフォルトの拡張子ではありません。これは、デフォルトではアクティブ化されていないことを意味します。 このモジュールは構成オプションで明示的にアクティブにする必要があります。

HTTP 入出力

HTTP 入出力の文字エンコーディング変換は、バイナリ データに対しても機能します。 HTTP入出力にバイナリデータを使用する場合、文字エンコーディングの変換はユーザーが制御する必要があります。

PHP 4.3.3 以降、HTML フォームの enctype 属性が multipart/form-data に設定され、php.ini の mbstring.encoding_translation が On に設定されている場合、POST 変数とアップロードされたファイルの名前も内部文字エンコーディングに変換されます。 ただし、変換はクエリのキーには適用されません。

HTTP 入力 PHP スクリプトで HTTP 入力文字の変換を制御する方法はありません。 HTTP 入力文字変換を無効にするには、これを php.ini で設定する必要があります。

例 #1 php.ini で HTTP 入力変換を無効にする

;; 禁用 HTTP 输入转换
mbstring.http_input = pass
;;禁用 HTTP 输入转换 (PHP 4.3.0 或更高版本)
mbstring.encoding_translation = Off

PHP が Apache モジュールとして実行されている場合。これらの設定は、各ディレクトリの httpd.conf または .htaccess の各仮想ホスト (Virtual Host) ディレクティブを通じてオーバーライドすることもできます。
HTTP 出力文字エンコード変換を使用するには、いくつかの方法があります。 1 つは php.ini を使用する方法、もう 1 つは ob_start() を使用し、ob_start のコールバック関数として mb_output_handler() を使用する方法です。

例 #2 php.ini 設定例

;; 为所有 PHP 页面启用输出字符编码的转换
;; 启用输出缓冲
output_buffering    = On
;; 设置 mb_output_handler 来进行输出的转换
output_handler      = mb_output_handler

例 #3 スクリプト例

<?php
    // 仅为此页面启用输出字符编码的转换
    // 设置 HTTP 输出字符编码为 SJIS
    mb_http_output(&#39;SJIS&#39;);
    // 开始缓冲并指定 "mb_output_handler" 为回调函数
    ob_start(&#39;mb_output_handler&#39;);
?>

マルチバイト文字列関数

mb_check_encoding — 文字列が指定されたエンコーディングで有効かどうかを確認する

mb_convert_case — 文字列のサイズを変更する 書き込み変換

mb_convert_encoding — 文字エンコーディングを変換します

mb_convert_kana — 「かな」を別の文字に変換します (「全角」、「半角」など)

mb_convert_variables — 1 つ以上の変数の文字エンコーディングを変換します

mb_decode_mimeheader — MIME ヘッダーフィールドの文字列

mb_decode_numericentity — HTML 数値文字列を文字にデコードします

mb_detect_encoding — 文字のエンコーディングを検出します

mb_detect_order — 文字エンコーディングの検出順序を設定/取得します

mb_encode_mimeheader — MIME ヘッドの場合 エンコードされた文字列

mb_encode_numericentity — 文字を HTML 数値文字列参照にエンコードします

mb_encoding_aliases — 既知のエンコーディング タイプのエイリアスを取得します

mb_ereg_match — マルチバイト文字列の正規表現一致

mb_ereg_replace_callback — 正規表現検索を実行し、コールバックを使用してマルチバイト サポートに置換します

mb_ereg_replace — 正規表現をマルチバイトサポートで置換します

mb_ereg_search_getpos — 次の正規表現一致の開始点を返します

mb_ereg_search_getregs — 最後のマルチバイト正規表現一致から結果を取得します

mb_ereg_search_init — マルチバイト正規表現一致のための文字列と正規表現を設定します

mb_ereg_search_pos — 事前定義されたマルチバイト文字列のマルチバイト正規表現の一致部分の位置と長さを返します

mb_ereg_search_regs — マルチバイト正規表現の一致した部分を返します

mb_ereg_search_setpos — 次の正規表現一致の開始点を設定します

mb_ereg_search — 事前定義されたマルチバイト文字列に対するマルチバイト正規表現一致

mb_ereg — マルチバイトサポートによる正規表現一致

mb_eregi_replace —大文字と小文字を無視して正規表現をマルチバイトサポートに置き換えます

mb_eregi — マルチバイトサポートで大文字と小文字を無視して正規表現を一致させます

mb_get_info — mbstringの内部設定を取得します

mb_http_input — HTTP入力文字エンコーディングを検出します

mb_http_output — HTTP出力文字エンコーディングを設定/取得します

mb_internal_encoding — 内部文字エンコーディングを設定/取得します

mb_ language — 現在の言語を設定/取得します

mb_list_encodings — サポートされているすべてのエンコーディングの配列を返します

mb_output_handler — 出力バッファ内の文字エンコーディングを変換するコールバック関数

mb_parse_str — Parse get/post/cookieデータとグローバル変数を設定し、MB_PREFERRED_MIME_NAME - MIME文字列を取得する

MB_REGEX_ENCODING - MULTIBYTE REGEXのセット/取得

mb_split — 正規表現を使用してマルチバイト文字列を分割します

mb_strcut — 文字の一部を取得します

mb_strimwidth — 指定された幅で切り詰められた文字列を取得します

mb_stripos — 大文字と小文字を区別せずに、別の文字が含まれる文字列を検索します文字列内の最初の出現箇所の検索

mb_stristr — 大文字と小文字を区別せずに、別の文字列内の文字列の最初の出現箇所を検索します

mb_strlen — 文字列の長さを取得します

mb_strpos — 別の文字列内の文字列の最初の出現箇所を検索します位置

mb_strrchr — 別の文字列内の指定された文字の最後の出現を検索します

mb_strrichr — 大文字と小文字を区別せずに、別の文字列内の指定された文字の最後の出現を検索します

mb_strripos — 大文字と小文字を区別せずに、ある文字列内の最後の出現を検索しますstring

mb_strrpos — 文字列内で最後に出現する文字列を検索します

mb_strstr — 別の文字列内で最初に出現する文字列を検索します

mb_strto lower — 文字列を小文字にします

mb_strtoupper — 文字列を大文字にします

mb_strwidth — Return文字列の幅

mb_substitute_character — 置換文字を設定/取得します

mb_substr_count — 文字列の出現数をカウントします

mb_substr — 文字列の一部を取得します

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。