ホームページ >バックエンド開発 >PHPチュートリアル >PHPで中国語の文字化けをインターセプトする問題の解決方法 substr_PHP チュートリアル
PHP には、substr、mb_substr、mb_strcut 関数など、いくつかの文字インターセプト関数が用意されています。PHP 初心者の中には、中国語の文字をインターセプトするために substr を使用する人もいます。文字化けを解決します。
記事ページの説明では、substr関数を使用して220文字をインターセプトしていますが、最後の漢字が常に文字化けしており、インターセプトの長さが正しくありません。
Googleの魔法で方法を見つけてください。 substr(string,start,length) が文字化けしてしまうためかもしれません
解決策:
PHP 拡張ライブラリの mb_substr メソッドを使用します。
注意
1. Windows/system32 にファイル php_mbstring.dll があることを確認します。ない場合は、Php インストール ディレクトリ拡張子から Windows/system32 にコピーします。
2. Windows ディレクトリで php.ini を見つけて編集のために開き、mbstring.dll を検索して
を見つけます
;extension=php_mbstring.dll mb_substr 関数が有効になるように、先頭の「;」記号を削除します
メソッド定義:
string mb_substr ( string str, int start [, int length [, 文字列エンコーディング]] )
注: mb_substr()/mb_strcut を使用する場合、文字列のエンコーディングを設定するために最後にもう 1 つのパラメーターを追加する必要があります。
例:
コードをコピー | |
echo mb_substr(‘元々文字化けしていた漢字が表示されます!’, 0, 7, ‘utf-8’);
|
コードをコピー | |
$description = mb_substr(strip_tags($post->post_content),0,220,’utf-8’);
|
mb_strcut関数
mb_strcut 関数は文字列の長さをインターセプトすることもできます。次の例で違いを見てみましょう。
コードをコピー | |||
コードは次のとおりです | コードをコピー |
関数 getsubstring($str,$len) { for($i = 0;$i { if ($i >=0 AND $i { If(ord(substr($str,$i,1)) > 0xa1) $result_str.=substr($str,$i,2); それ以外は $result_str.=substr($str,$i,1); } If(ord(substr($str,$i,1)) > 0xa1) $i++; } if(strlen($str) $result_str を返す それ以外は $result_str."..." を返します。 } |
www.bkjia.com