ホームページ > バックエンド開発 > PHPチュートリアル > PHP によってインターセプトされる文字化け中国語の問題のトラブルシューティング substr_PHP チュートリアル

PHP によってインターセプトされる文字化け中国語の問題のトラブルシューティング substr_PHP チュートリアル

WBOY
リリース: 2016-07-15 13:31:28
オリジナル
1051 人が閲覧しました

1を使用しています。mbstring拡張ライブラリのmb_substrインターセプトを使用すると文字化けが回避されます。

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

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

substr() 関数はテキストを分割できますが、分割するテキストに漢字が含まれている場合は、mb_substr()/mb_strcut 関数を使用することができます。 mb_strcut は substr() に似ていますが、mb_substr()/mb_strcut の最後にパラメータを 1 つ追加するだけで、文字列のエンコーディングを設定できます。ただし、ほとんどのサーバーは php_mbstring.dll を php で開く必要があります。 .ini。

中国語の文字をインターセプトする PHP substr の例を示します:

<ol class="dp-xml">
<li class="alt"><span><span class="tag"><</span><span> ?php  </span></span></li><li><span>echo mb_substr('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8');  </span></li><li class="alt"><span class="tag">?></span><span> </span></span></li>
<li><span>输出:这样一来我的字  </span></li>
<li class="alt">
<span class="tag"><</span><span> ?php  </span></li><li><span>echo mb_strcut('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8');  </span></li><li class="alt"><span class="tag">?></span><span> </span>
</li>
</ol>
ログイン後にコピー

出力: このようになります
上記の例からわかるように、mb_substr は文字を単語ごとに分割し、mb_strcut は文字をバイトごとに分割しますが、どちらも半分にはなりません。性格現象。

PHP substr を使用して文字化けせずに中国語をインターセプトする方法

<ol class="dp-xml">
<li class="alt"><span><span>function GBsubstr($string, $start, $length) {  </span></span></li>
<li>
<span>if(strlen($string)</span><span class="tag">></span><span>$length){  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">str</span><span>=</span><span class="attribute-value">null</span><span>;  </span>
</li>
<li>
<span>$</span><span class="attribute">len</span><span>=$start+$length;  </span>
</li>
<li class="alt">
<span>for($</span><span class="attribute">i</span><span>=$start;$i</span><span class="tag"><</span><span>$len;$i++){  </span></li><li><span>if(ord(substr($string,$i,1))</span><span class="tag">></span><span>0xa0){  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">str.</span><span>=</span><span class="attribute-value">substr</span><span>($string,$i,2);  </span>
</li>
<li><span>$i++;  </span></li>
<li class="alt"><span>}else{  </span></li>
<li>
<span>$</span><span class="attribute">str.</span><span>=</span><span class="attribute-value">substr</span><span>($string,$i,1);  </span>
</li>
<li class="alt"><span>}  </span></li>
<li><span>}  </span></li>
<li class="alt"><span>return $str.'...';  </span></li>
<li><span>}else{  </span></li>
<li class="alt"><span>return $string;  </span></li>
<li><span>}  </span></li>
<li class="alt"><span>}  </span></li>
</ol>
ログイン後にコピー

上記 2 つのコード例は、PHP substr が中国語をインターセプトするときに文字化けが発生する原因と解決策の紹介です。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446215.html技術記事 1を使用しています。mbstring拡張ライブラリのmb_substrインターセプトを使用すると文字化けが回避されます。 2. インターセプト関数を自分で作成しますが、効率は mbstring 拡張ライブラリを使用するほど高くありません。 3. できれば...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート