ホームページ >バックエンド開発 >PHPチュートリアル >PHPで中国語の文字化けをインターセプトする問題の解決方法 substr_PHP チュートリアル

PHPで中国語の文字化けをインターセプトする問題の解決方法 substr_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:43:141314ブラウズ

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 関数は文字列の長さをインターセプトすることもできます。次の例で違いを見てみましょう。

コードは次のとおりです $str = 'こうすれば文字化けがなくなります^_^';


echo "mb_substr:" . mb_substr($str, 0, 7, 'utf-8'); //結果: 私の言葉はこうなります

echo "
";


echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8'); //結果: このようになります
?>



上記の例からわかるように、mb_substr は文字を単語ごとに分割し、mb_strcut は文字をバイトごとに分割しますが、どちらも文字の半分を生成しません。

substr()関数中国語版 通常のsubstr()関数は指定した長さの文字列の部分文字列を取得できますが、中国語に遭遇した場合、新しい文字列の末尾に文字化けが発生する場合があります。 以下の関数は文字列を取得します。 $lenを超える長さの場合は「...」で終わるように変換し、文字化けを解消します。
使用法: $new = getsubstring($old,20);

コードをコピー
コードは次のとおりです コードをコピー
関数 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."..." を返します。 }




http://www.bkjia.com/PHPjc/633190.html

www.bkjia.com

http://www.bkjia.com/PHPjc/633190.html技術記事 PHP には、substr、mb_substr、mb_strcut 関数など、いくつかの文字インターセプト関数が用意されています。PHP 初心者の中には、substr を使用して中国語の文字をインターセプトする人もいますが、中国語の文字が文字化けしてしまうことがわかります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。