ホームページ  >  記事  >  バックエンド開発  >  PHP は substr() によってインターセプトされる文字化けの問題を解決します

PHP は substr() によってインターセプトされる文字化けの問題を解決します

高洛峰
高洛峰オリジナル
2016-12-30 14:38:571515ブラウズ

php で、substr() を使用して英語だけの文字列をインターセプトしたい場合、中国語や英語が含まれている場合は問題ありませんが、心配しないでください。それを解決するための他の方法。

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

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

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

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

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

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

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

$strlen = $start + $len //$strlen を使用して、文字列の開始位置からの全長を格納します。 string を文字列の全長に変換します

code 以下の通り

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 プログラミングに関する同じ問題に対処するすべての人に役立つことを願っています。

substr() によってインターセプトされる中国語文字化けの問題を解決するための PHP 関連記事をさらに詳しく知りたい場合は、PHP 中国語 Web サイトに注目してください。

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