ホームページ  >  記事  >  バックエンド開発  >  php substr 中国語の文字化けコードの解決策

php substr 中国語の文字化けコードの解決策

高洛峰
高洛峰オリジナル
2016-11-29 16:16:221521ブラウズ

substr を直接使用して中国語の文字列をインターセプトすると、中国語の文字が半分に分割されるため、必ず文字化けが発生します。なぜこれは、マシンの内部エンコーディングの問題によるものでしょうか。解決策

1. mbstring 拡張ライブラリ mb_substr インターセプトを使用すると文字化けが発生しません。

2. インターセプト関数を自分で作成しますが、効率は mbstring 拡張ライブラリを使用するほど高くありません。

3. インターセプトされた文字列を出力するだけの場合は、次の方法で実装できます: substr($str, 0, 30).chr(0)。

PHP のサンプル コードは次のとおりです。 * 中国語の文字化けを回避できます

* パラメータ $str は文字列、$start は開始文字、$len は終了文字

* インターセプトされた文字を返します

*/

function msubstr($str, $ start, $len) {

$tmpstr = "";//オープンソースコード phpfensi.com

$strlen = $start + $len)

for($i = 0; $i < $strlen; $ i++) {

if(ord(substr( $str, $i, 1)) > 0xa0) {

$tmpstr .= substr($str, $i, 2) } else

$tmpstr .= substr($str , $i, 1);

}

return $tmpstr;

方法 2、文字化けせずに中国語のテキスト文字列をインターセプトするための PHP メソッド、コードは次のとおりです

function gbsubstr($string, $start, $length) {

if(strlen($string)>$length){

$str=null;

for($i=$start;$i

if(ord(substr($string,$i,1))>0xa0){

$str.=substr($ string,$i,2);

$i++;

}else{

$str.=substr($string,$i,1);

}

}

$str.'. .';

}else{

$string を返す

}

;

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