文字列の一部を得る関数mb_substrとmb_strcutの違い

mb関数の中には、「文字列を開始位置から一部を取得する(文字列の一部を得る)関数」が2種類あります。
mb_substrとmb_strcutです。

この違いは、開始位置や切り出す長さをmb_substrが文字数でカウントするのに対し、mb_strcutはバイト数でカウントします。

[参考記事] mb_strlenやmb_strimwidthの注意点
[参考記事] マルチバイト文字列(日本語文字)を一文字づつ取り出す

<?php
$str="テストですよ。";

var_dump( mb_substr($str,3,3,"SJIS") );

var_dump( mb_strcut($str,3,3,"SJIS") );
string(6) "ですよ"
string(2) "ス"
mb_substr
テストですよ。
123123
mb_strcut
テストですよ。
123
  123

またmb_strcutはバイト数でカウントするため、文字のエンコードによって返り値が異なります。
(SJISは1文字が1〜2バイト、UTF-8は1文字が1〜3バイト)

文字コードはShift-JIS

<?php
$str="テストですよ。";

var_dump( mb_strcut($str,6,4,"SJIS") );
string(4) "です"

文字コードはUTF-8

<?php
$str="テストですよ。";

var_dump( mb_strcut($str,6,4,"UTF-8") );
string(2) "ト"
mb_substr(
    文字列,
    開始位置,
    [ ,切り出す長さ
    [ ,エンコーディング]] )
文字列を開始位置から文字数分、取得します。
開始位置や切り出す長さは、文字数で指定します。
mb_strcut(
    文字列,
    開始位置,
    [ ,切り出す長さ
    [ ,エンコーディング]] )
文字列を開始位置から文字数分、取得します。
開始位置や切り出す長さは、バイト数で指定します。

関連記事

スポンサーリンク

FAT(File Allocation Table)ファイルシステムの仕様 FAT16 FAT32 exFAT VFAT

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る