PHPのお勉強!

PHP TOP

mb_strwidth

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_strwidth文字列の幅を返す

説明

mb_strwidth(string $string, ?string $encoding = null): int

文字列 string の幅を返します。 半角文字は 1 として、 全角文字は 2 として数えます。 東アジアの文字の長さに関する詳細は » http://www.unicode.org/reports/tr11/ を参照ください。

全角文字は次のとおりです。 U+1100-U+115FU+11A3-U+11A7U+11FA-U+11FFU+2329-U+232AU+2E80-U+2E99U+2E9B-U+2EF3U+2F00-U+2FD5U+2FF0-U+2FFBU+3000-U+303EU+3041-U+3096U+3099-U+30FFU+3105-U+312DU+3131-U+318EU+3190-U+31BAU+31C0-U+31E3U+31F0-U+321EU+3220-U+3247U+3250-U+32FEU+3300-U+4DBFU+4E00-U+A48CU+A490-U+A4C6U+A960-U+A97CU+AC00-U+D7A3U+D7B0-U+D7C6U+D7CB-U+D7FBU+F900-U+FAFFU+FE10-U+FE19U+FE30-U+FE52U+FE54-U+FE66U+FE68-U+FE6BU+FF01-U+FF60U+FFE0-U+FFE6U+1B000-U+1B001U+1F200-U+1F202U+1F210-U+1F23AU+1F240-U+1F248U+1F250-U+1F251U+20000-U+2FFFDU+30000-U+3FFFD。 他のすべての文字は半角の文字です。

パラメータ

string

幅を取得したい文字列。

encoding

encoding パラメータには文字エンコーディングを指定します。省略した場合、もしくは null の場合は、 内部文字エンコーディングを使用します。

戻り値

文字列 string の幅を返します。

変更履歴

バージョン 説明
8.0.0 encoding は、nullable になりました。

例1 mb_strwidth() example

<?php
var_dump
(
mb_strwidth('a'), // LATIN SMALL LETTER A
mb_strwidth("\u{ff41}") // FULLWIDTH LATIN SMALL LETTER A
);
?>

上の例の出力は以下となります。

int(1)
int(2)

参考

add a note

User Contributed Notes 2 notes

up
1
Anonymous
17 years ago
Note: mb_strwidth is NOT returning bytes. It's returning the width of monotype characters. (In some languages, some characters will take up 2 character widths if displayed in monotype.)
up
0
Adam Altman
10 years ago
Important, if you're looking to trim/cut/truncate a string so that it will fit a certain byte size (for example to fit in a database field), look at: mb_strcut()