to convert a multi-byte character into hex strings:
$b = "現,市民派利市的習慣亦有所改變";
printf("length of string: %d <br>", mb_strlen($b, 'UTF-8'));
for ($i=0; $i < mb_strlen($b, 'UTF-8'); $i++){
$ch = mb_substr($b, $i, 1, 'UTF-8');
$chlen = mb_strwidth($ch, 'UTF-8');
$hexs = '';
for ($j=0; $j < $chlen; $j++)
$hexs = $hexs . sprintf("%x", ord($ch[$j]));
printf ("width=%d => '%s' |hex=%s<br>", $chlen, $ch, $hexs );
}
mb_strwidth
(PHP 4 >= 4.0.6, PHP 5)
mb_strwidth — 文字列の幅を返す
説明
int mb_strwidth
( string $str
[, string $encoding
] )
文字列 str の幅を返します。
マルチバイト文字は、通常はシングルバイト文字の倍の幅となります。
| 文字 | 幅 |
|---|---|
| U+0000 - U+0019 | 0 |
| U+0020 - U+1FFF | 1 |
| U+2000 - U+FF60 | 2 |
| U+FF61 - U+FF9F | 1 |
| U+FFA0 - | 2 |
パラメータ
- str
-
幅を取得したい文字列。
- encoding
-
encoding パラメータには文字エンコーディングを指定します。省略した場合は、 内部文字エンコーディングを使用します。
返り値
文字列 str の幅を返します。
mb_strwidth
larry1chan at gmail dot com
07-Feb-2008 06:38
07-Feb-2008 06:38
Anonymous
01-Nov-2007 12:27
01-Nov-2007 12:27
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.)
