PHPで、見た目の長さで文字列を切って「…」を後につけるなんてことはよくやることなんだけれども、strlenでは意味がない場合があることに、恥ずかしながら最近気がついたのでメモ。 例えば、 123あい45うえおという文字列があったときに、半角10文字分を超える場合は後ろを切って「…」をつけて表示する時、 123あい45…が正しいとする*1場合、「123あい45」をstrlenで数えると、UTF-8の場合は11バイトになり、mb_strlenで数えると7になる。欲しいのは9なのに。 一般に、バイト数を知るには、strlenを使う。 PHP: strlen - Manual また、全角・半角を区別して文字数を数えるにはmb_strlenを使う。 PHP: mb_strlen - Manual そして、今回のように文字幅(見た目の長さ)を数えるにはmb_strwidthを使う。 PHP: mb_