ホームページ  >  記事  >  バックエンド開発  >  phpのsubstr()による漢字文字化け問題の解決方法について

phpのsubstr()による漢字文字化け問題の解決方法について

墨辰丷
墨辰丷オリジナル
2018-06-01 17:38:361673ブラウズ

この記事では主に PHP の substr() 関数を紹介します。中国語の文字列をインターセプトする際の文字化けの問題を説明するコード例を示します。必要な方は参考にしてください。

PHP で文字列をインターセプトするために substr() を使用したい場合は、すべて英語であれば問題ありません。中国語や英語が含まれている場合は悲惨ですが、他の方法で問題を解決できますので、ご安心ください。

PHPが中国語の文字列をインターセプトすると文字化けが発生する これは以前、メタ情報を自動生成する記事を書きましたが、その記事は記述方法としてPHPを使用するというものでした。と思ったのですが、IE6ではCSSが読み込めないという事が出てきましたので補足です。

まず、IE6 が時々 CSS のロードに失敗する理由は、ファイルが文字化けしており、CSS をロードする後続のリンクが IE6 によって正しく解析されないためです。つまり、CSS のない、純粋な HTML ページが表示されました。問題を明確にした後、残りの問題は簡単に解決できます。それは文字化けを防ぐことです。Wange が提供する関数が文字化けするため、この文字化けの問題を解決する新しい PHP 関数を見つけました。

substr() 関数はテキストを分割できますが、分割するテキストに中国語の文字が含まれている場合、問題が発生することがよくあります。

mb_substr() の使用法は、文字列のエンコーディングを設定するために最後にパラメーターが 1 つ追加されることを除いて、substr() と似ています。

Wangeメソッドを改良した理由が分かるはずです~~

以下では、より高度な処理メソッドをいくつか紹介します

例1

コードは次のとおりです

function func_chgtitle($str,$len) { //$length我们允许字符串显示的最大长度 
 $tmpstr = "";
 $strlen = $len;
 for($i = 0; $i < $strlen; $i++) {
 if(ord(substr($str, $i, 1)) > 0xa0) {
 $tmpstr .= substr($str, $i, 2);
 $i++;
 } else
 $tmpstr .= substr($str, $i, 1);
 }
 return $tmpstr;
}

例 2

文字列は UTF-8 としてエンコードされ、1 つの中国語文字が 3 バイトを占めます:

public static function chinesesubstr($str, $start, $len) { // $str は文字を参照します文字列、$start は文字列の開始位置を指し、$len は文字列の長さを指します

$strlen = $start + $len; // $strlen を使用して全長を保存します文字列の、つまり文字列の開始位置から文字列の全長までのコードです

​​

コードは次のとおりです

 for($i = $start; $i < $strlen;) {
 if (ord ( substr ( $str, $i, 1 ) ) > 0xa0) { // 如果字符串中首个字节的ASCII序数
值大于0xa0,则表示汉字
 $tmpstr .= substr ( $str, $i, 3 ); // 每次取出三位字符赋给变量$tmpstr,即等
于一个汉字
 $i=$i+3; // 变量自加3
 } else{
 $tmpstr .= substr ( $str, $i, 1 ); // 如果不是汉字,则每次取出一位字符赋给
变量$tmpstr
 $i++;
 }
 }
 return $tmpstr; // 返回字符串
 }

要約:上記がこの記事の全内容です。みんなの学習に役立ちます。

関連する推奨事項:

php Oracleストアドプロシージャのグラフィック説明にアクセス

php現在のURLアドレスを取得する実装

バイナリストリームを受信して​​画像に変換するPHP実装

以上がphpのsubstr()による漢字文字化け問題の解決方法についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。