PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHP – mb_detect_encoding()を使用して文字エンコードを検出する方法


PHPでは、 mb_detect_encoding() 文字エンコードを検出するために使用されます。候補の順序付きリストから文字列の文字エンコードを検出できます。この関数は、PHP4.0.6以降のバージョンでサポートされています。

mb_detect_encoding() すべてのバイトシーケンスが有効な文字列を形成するわけではないマルチバイトエンコーディングで役立ちます。入力文字列にそのようなタイプのシーケンスが含まれている場合、そのエンコーディングは拒否され、次のエンコーディングをチェックします。

構文

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

文字エンコードの自動検出は、追加情報がないと完全に信頼できるものではありません。文字エンコードの検出は、キーなしで暗号化された文字列をデコードすることに似ていると言えます。 コンテンツタイプのHTTP ヘッダーは、データとともに保存または送信される文字エンコードを示すために使用できます。

パラメータ

mb_detect_encoding 関数は3つのパラメーターを受け入れます-

  • $ string −このパラメーターは、検査対象の文字列に使用されます。

  • $ encoding −このパラメーターは、順番に試行する文字エンコードのリストに使用されます。リストは、文字列の配列や、コンマで区切られた単一の文字列のみなど、任意の形式で指定できます。エンコーディングが省略またはnullの場合、現在のdetect_orderは mbstring.detect_orderで設定されます。 構成オプションまたはmb_detect_order() 関数が使用されます。

  • $ strict −このパラメーターは、リストされたエンコードのいずれかで文字列が無効な場合の動作を制御するために使用されます。 strictがfalseに設定されている場合、最も一致するエンコーディングが返されます。 strictがtrueに設定されている場合、falseが返されます。

戻り値

検出された文字エンコードを返します。リストされたエンコードのいずれかで文字列が無効な場合はFalseを返します。

例1

厳密なパラメータのないmb_detect_encoding()関数

<?php
   $string="";
   // It detect char encoding with current detect_order
   echo mb_detect_encoding($string);

   // auto is expanded according to mbstring.language
   echo mb_detect_encoding($string, "auto");

   // Specify encodings
   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
   // 'áéóú' encoded in ISO-8859-1
   $string = "\xxE11\xE9\xF3\xxFA";

   // UTF-8 is considered a closer match
   var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8'], false));
   var_dump(mb_detect_encoding($string, ['ASCII', 'UTF-8'], true));

   //strict parameter does not change the result, if it finds a valid encoding
   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"

  1. PHPでimageline()関数を使用して線を引く方法は?

    imageline() はPHPに組み込まれている関数で、指定された2つのポイントの間に線を引くために使用されます。 構文 bool imageline(resource $image, int $x1, int $y1,int $x2, int $y2, int $color) パラメータ imageline() $ image、$ x1、$ y1、$ x2、$ y2、$colorの6つの異なるパラメータを取ります。 $ image −作業する画像リソースを指定します。 $ x1 −開始x座標を指定します。 $ y1 −開始y座標を指定します。 $

  2. Outlookで文字エンコードを変更する方法

    多くの場合、送信者がOutlook経由でメールを送信すると、メッセージは表示されませんが、判読できない文字が表示されます。 Outlookメールに奇妙な文字や正しくない文字が定期的に表示される場合は、この短いチュートリアルが問題の解決に役立ちます。キーボードで何かを入力すると、コンピューターはエンコードと呼ばれる複雑なプロセスを介してそれを認識します。次に、関連する文字を画面に表示します。つまり、これはこの文字エンコードです これは、どの値がどの文字に対応するかを決定する際のキーとして機能します。 これらの文字の視覚的表現は、グリフと呼ばれます。それの異なるセットは「フォント」を構成します。