PHP 文字列の文字化けをインターセプトする解決策: 1. mbstring 拡張ライブラリの [mb_substr()] を使用してインターセプトします; 2. [UTF-8] でエンコードされた文字列をインターセプトします。コードは [$str = trim( $str);]。
PHP 文字列の文字化けをインターセプトする解決策:
1. mbstring 拡張ライブラリの mb_substr を使用します。 ()インターセプトしても文字化けは発生しません。
関数 mb_substr()/mb_strcut() を使用できます。mb_substr()/mb_strcut() の使用法は、パラメータを 1 つ追加する必要がある点を除けば、substr() と似ています。 mb_substr()/mb_strcut の終わり。文字列のエンコーディングを設定するには、
しかし、ほとんどのサーバーは php_mbstring.dll を開きません。php.ini で php_mbstring.dll を開く必要があります。
echo mb_substr("php中文字符encode",0,4,"utf-8");
最後のエンコードパラメータが指定されていない場合、3バイトを漢字1文字として扱います。これがutf-8エンコードの特徴です。utf-8文字セットの記述を追加すると、 1 文字。ユニットに対してインターセプトされます。
利用する際はphpファイルのエンコードとWebページ表示時のエンコードに注意してください。この mb_substr メソッドを使用するには、事前に文字列のエンコーディングを知っておく必要があります。エンコーディングがわからない場合は、判断する必要があります。mbstring ライブラリには、文字列のエンコーディングをチェックするための mb_check_encoding も提供されていますが、まだ完全ではありません。
PHP にはいくつかの文字列インターセプト関数が付属しており、その中で、substr と mb_substr がよく使用されます。前者が中国語を処理する場合、GBK は 2 長さ単位、UTF は 3 長さ単位となり、後者でエンコーディングを指定すると、1 つの中国語文字が 1 長さ単位になります。
substr では中国語の 1/3 や半分が切れてしまったり文字化けしたりすることがありますが、比較的使いやすいのは mb_substr です。ただし、mb_substr は使いにくい場合があります。例えば、小さな画像の簡単な情報を表示したい場合、漢字は5文字程度がちょうど良いですが、5文字以上の場合は最初の4文字を切り取って「…」を追加すれば処理上問題ありません。中国語ですが、英語や数字を処理する場合、このインターセプトは短すぎます。
2. インターセプト関数を自分で作成しますが、効率は mbstring 拡張ライブラリを使用するほど高くありません。以下は、UTF-8 でエンコードされた文字列をインターセプトする ecshop の関数です。
function sub_str($str, $length = , $append = true) { $str = trim($str); $strlength = strlen($str); if ($length == || $length >= $strlength) { return $str; //截取长度等于或大于等于本字符串的长度,返回字符串本身 } elseif ($length < ) //如果截取长度为负数 { $length = $strlength + $length;//那么截取长度就等于字符串长度减去截取长度 if ($length < ) { $length = $strlength;//如果截取长度的绝对值大于字符串本身长度,则截取长度取字符串本身的长度 } } if (function_exists('mb_substr')) { $newstr = mb_substr($str, , $length, EC_CHARSET); } elseif (function_exists('iconv_substr')) { $newstr = iconv_substr($str, , $length, EC_CHARSET); } else { //$newstr = trim_right(substr($str, , $length)); $newstr = substr($str, , $length); } if ($append && $str != $newstr) { $newstr .= '...'; } return $newstr; }
プログラミング学習について詳しく知りたい場合は、php training のコラムに注目してください。
以上がPHPの文字列が文字化けした場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。