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 が中国語をインターセプトするときに文字化けが発生する原因と解決策の紹介です。