ホームページ  >  記事  >  バックエンド開発  >  PHP は中国語の文字列長の mb_substr() および mb_strcut() 関数をインターセプトします

PHP は中国語の文字列長の mb_substr() および mb_strcut() 関数をインターセプトします

黄舟
黄舟オリジナル
2017-02-06 15:12:351289ブラウズ

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

例:

<?php
echo mb_substr(‘这样一来我的字符串就不会有乱码^_^’, 0, 7, ‘utf-8′);
?>

出力: このように私の単語

<?php
echo mb_strcut(‘这样一来我的字符串就不会有乱码^_^’, 0, 7,’utf-8′);
?>

出力: この方法

上記の例からわかるように、mb_substr は文字を単語ごとに分割し、mb_strcut は文字をバイトごとに分割します。しかし、半文字現象は起こりません...

上記の段落はインターネットからの抜粋であり、結果は私自身のテストによって得られました。

個人的な理解:
mb_substr() 関数は、英語または中国語の文字の単位を表します。
mb_strcut() 関数には、中国語文字用に 3 つのユニットと英語文字用の 1 つのユニットがあります。

例:

<?php
$str = “这样abcd一来”;
echo “mb_substr:”.mb_substr($str, 0, 5, ‘utf-8′);
echo “<br>”;
echo “mb_strcut:”.mb_strcut($str, 0, 8, ‘utf-8′);
?>

出力結果は以下の通り:

mb_substr: 这样abc
mb_strcut:  这样ab

添付ファイル:

strlenとmb_strlenの違い:

<?php 
$str=”中文a字1符”; 
echo strlen($str); 
echo “<br />”; 
echo mb_strlen($str,’UTF8′); 
?>

出力結果:

14 
6

上記はsubstr()中国語の文字列の長さをインターセプトするために PHP によって使用される mb_strcut() 関数のコンテンツ。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


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