インターネットの継続的な発展に伴い、Web アプリケーションの需要は日に日に高まっており、一般的に使用される Web プログラミング言語として、PHP には大規模な開発者グループがあり、幅広いアプリケーション シナリオがあります。 PHP 開発プロセスでは、中国語の文字列をインターセプトすることが一般的な要件です。ただし、PHP の組み込み関数を直接使用して中国語の文字列をインターセプトすると、文字化けが発生します。この記事では、PHPを使って中国語の文字列を文字化けせずにインターセプトする方法を紹介します。
1. PHP 中国語文字列インターセプトの問題
PHP には、文字列をインターセプトするための 3 つの関数、substr() 関数、mb_substr() 関数、iconv_substr() 関数があります。ただし、substr() 関数を使用して中国語の文字列をインターセプトする場合、substr() 関数はバイト単位でインターセプトし、中国語の文字が占めるバイト数は 2 または 3 であるため、インターセプトした文字列が文字化けします。以下に示すように:
$str = '我是中国人'; echo substr($str, 0, 6);//截取前6个字符
上記のコードを実行すると、出力結果は「I am ä¸å›½」になります。ご覧のとおり、これは文字化けしたコードであり、中国語の文字列は正しくインターセプトされません。
mb_substr() 関数と iconv_substr() 関数を使用すると、文字化けした中国語文字列のインターセプトの問題を解決でき、どちらも UTF-8 でエンコードされた中国語文字列のインターセプトをサポートしています。以下にこれら 2 つの機能の使い方を紹介します。
2. mb_substr() 関数は文字化けせずに中国語をインターセプトします
mb_substr() 関数は、PHP で文字列をインターセプトするために特に使用される関数であり、中国語を含む複数の言語をサポートしています。この関数を使用して中国語の文字列をインターセプトすると、文字化けを回避できます。この関数のパラメータは次のとおりです:
mb_substr(string $str, int $start, int $length, string $encoding)
この関数には 4 つのパラメータがあります:
たとえば、次のコードは mb_substr() 関数を使用して中国語の文字列をインターセプトします。
$str = '我是中国人'; echo mb_substr($str, 0, 6, 'utf-8');//截取前6个字符
上記のコードを実行すると、出力結果は「私は中国です」となります。
3. iconv_substr() 関数は文字化けせずに中国語をインターセプトします
mb_substr() 関数に加えて、iconv_substr() 関数も文字化けした中国語文字列をインターセプトする問題を解決できます。 iconv_substr() 関数も、PHP で文字列をインターセプトするために特に使用される関数であり、4 番目のパラメーターがターゲット エンコーディングではなく文字列のソース エンコーディングを表すという点で mb_substr() 関数とは異なります。ここで、ソース エンコーディング パラメータは実際の文字列エンコーディングと一致している必要があることに注意してください。この関数のパラメータは次のとおりです:
iconv_substr(string $str,int $start, int $length = NULL, string $charset = ini_get('iconv.internal_encoding'))
この関数には 4 つのパラメータがあります:
たとえば、次のコードは iconv_substr() 関数を使用して中国語の文字列をインターセプトします。
$str = '我是中国人'; echo iconv_substr($str, 0, 6, 'utf-8');//截取前6个字符
上記のコードを実行すると、出力結果は「私は中国です」となります。
4. 概要
Web アプリケーション開発では、中国語の文字列をインターセプトすることが一般的な要件です。 PHP 組み込み関数 substr() 関数は文字列をインターセプトできますが、バイト単位でインターセプトするため、中国語の文字を正しく処理できず、インターセプトした文字列が文字化けします。したがって、この問題を解決するには、mb_substr() 関数または iconv_substr() 関数を使用できます。どちらの関数も、UTF-8 でエンコードされた中国語文字列のインターセプトをサポートしており、文字化けを回避できます。
以上がPHPで文字化けせずに中国語を傍受する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。