PHPのsubstr()、mb_substr()、mb_strcutの違いと使用法、およびSmartyテンプレートのtruncateレギュレータについての簡単な説明
PHP の substr() 関数はテキストを分割できますが、分割するテキストに中国語の文字が含まれている場合は、mb_substr()/mb_strcut 関数を使用することができます。 substr() と似ていますが、文字列のエンコーディングを設定するために mb_substr()/mb_strcut の最後にもう 1 つのパラメータを追加する必要があります。ただし、ほとんどのサーバーは php_mbstring.dll を開く必要があります。 dllはphp.iniにあります。
例:
echo mb_substr('こうすれば文字列は文字化けしません^_^', 0, 7, 'utf-8');
?>
出力: このように私の言葉
echo mb_strcut('こうすれば文字化けしません^_^', 0, 7, 'utf-8');
?>
出力: このようになります
上記の例からわかるように、mb_substr は文字を単語ごとに分割し、mb_strcut は文字をバイトごとに分割しますが、どちらも文字の半分を生成しません...
mbstring関数の説明:
php の mbstring 拡張モジュールは、マルチバイト文字処理機能を提供します。最も一般的に使用される方法は、mbstring を使用してマルチバイト中国語文字を分割することです。これは、php の拡張機能であるため、パフォーマンスが向上します。また、一部のカスタム マルチバイト セグメンテーション関数よりも優れています。
mbstring 拡張機能には、同様の関数を備えたいくつかの関数、mb_substr および mb_strcut が用意されています。説明はマニュアルを参照してください。
mb_substr
mb_substr() は、start パラメーターと length パラメーターで指定された str の部分を返します。
mb_substr() は、文字数に基づいてマルチバイトの安全な substr() 操作を実行します。位置は str の先頭からカウントされます。最初の文字の位置は 0 です。2 番目の文字の位置は 1 になります。
mb_strcut
mb_strcut() は、start パラメーターと length パラメーターで指定された str の部分を返します。
mb_strcut()はmb_substr()と同等の動作を別の方法で行いますが、開始位置がマルチバイト文字の2バイト目以上の場合はマルチバイト文字の1バイト目から開始されます。
長さより短い文字列と、マルチバイト文字列の一部ではない文字、またはシフトシーケンスの途中ではない文字を str から減算します。別の例として、mb_substr と mb_strcut をそれぞれ使用してセグメント化されたテキストがあります。
プレーンテキスト
コード:
$str = '私は中国語の比較的長い文字列-www.webjx.com';
echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8');
エコー "
";
echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8');
?>
出力は次のようになります:
mb_substr: 私は比較の文字列です // 文字によってインターセプトされ、英語の文字と漢字は両方とも 1 つの文字です
注: Smarty テンプレートを使用する場合、文字列をインターセプトするために truncate アジャスターを使用することができます。このとき、インターセプトする文字列に中国語の文字が含まれていると、文字化けが発生します (可変長エンコーディングでは、通常は文字が使用されます)。文字列の長さを測定するためのバイト数) を使用すると、文字数に応じて文字列をインターセプトする変数調整器を定義できます。方法: 1. PHP の ord() 関数を使用して、文字の ASCII コードを取得します。 2. substr() 関数を使用して、中国語の文字化けが発生しないように ASCII コードに従って文字列をインターセプトします。
http://www.bkjia.com/PHPjc/477951.html