ホームページ > バックエンド開発 > PHPチュートリアル > PHP と Smar における substr() mb_substr() mb_struct() の違いと使用法..._PHP チュートリアル

PHP と Smar における substr() mb_substr() mb_struct() の違いと使用法..._PHP チュートリアル

WBOY
リリース: 2016-07-13 17:54:34
オリジナル
973 人が閲覧しました

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 つの文字です

mb_strcut: // バイト単位でインターセプトします。漢字 1 文字は 3 バイトです


注: Smarty テンプレートを使用する場合、文字列をインターセプトするために truncate アジャスターを使用することができます。このとき、インターセプトする文字列に中国語の文字が含まれていると、文字化けが発生します (可変長エンコーディングでは、通常は文字が使用されます)。文字列の長さを測定するためのバイト数) を使用すると、文字数に応じて文字列をインターセプトする変数調整器を定義できます。方法: 1. PHP の ord() 関数を使用して、文字の ASCII コードを取得します。 2. substr() 関数を使用して、中国語の文字化けが発生しないように ASCII コードに従って文字列をインターセプトします。

http://www.bkjia.com/PHPjc/477951.html

tru​​ehttp://www.bkjia.com/PHPjc/477951.html技術記事 PHP substr()、mb_substr()、mb_strcut の違いと使用法、および Smarty テンプレートの truncate レギュレーターについての簡単な説明。PHP substr() 関数はテキストを分割できますが、分割されるテキストに中国語の文字が含まれている場合...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート