PHP 5.4.33 Released

mb_strwidth

(PHP 4 >= 4.0.6, PHP 5)

mb_strwidthReturn width of string

Descrizione

int mb_strwidth ( string $str [, string $encoding = mb_internal_encoding() ] )

Returns the width of string str.

Multi-byte characters are usually twice the width of single byte characters.

Characters width
Chars Width
U+0000 - U+0019 0
U+0020 - U+1FFF 1
U+2000 - U+FF60 2
U+FF61 - U+FF9F 1
U+FFA0 - 2

Elenco dei parametri

str

The string being decoded.

encoding

Il parametro encoding è la codifica dei caratteri. Se è omesso, verrà utilizzata la codifica interna.

Valori restituiti

The width of string str.

Vedere anche:

add a note add a note

User Contributed Notes 4 notes

up
0
Adam Altman
8 months 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()
up
0
larry1chan at gmail dot com
6 years ago
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 );
       
       
    }
up
0
Anonymous
6 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
-3
chiangtor at gmail dot com
1 year ago
to convert a multi-byte character into hex strings:
    <?php
        $b
= "現,市民派利市的習慣亦有所改變";
       
printf("length of string: %d \n", mb_strlen($b, 'UTF-8'));
        for (
$i=0; $i < mb_strlen($b, 'UTF-8'); $i++){
           
$ch = mb_substr($b, $i, 1, 'UTF-8');
           
$chlen = strlen($ch);
           
$hexs = '';
            for (
$j=0; $j < $chlen; $j++)
               
$hexs = $hexs . sprintf("%x", ord($ch[$j]));
           
printf ("width=%d => '%s' |hex=%s\n", $chlen, $ch, $hexs );
        }
   
?>   

width=3 => '現' |hex=e78fbe
width=3 => ',' |hex=efbc8c
width=3 => '市' |hex=e5b882
width=3 => '民' |hex=e6b091
width=3 => '派' |hex=e6b4be
width=3 => '利' |hex=e588a9
width=3 => '市' |hex=e5b882
width=3 => '的' |hex=e79a84
width=3 => '習' |hex=e7bf92
width=3 => '慣' |hex=e685a3
width=3 => '亦' |hex=e4baa6
width=3 => '有' |hex=e69c89
width=3 => '所' |hex=e68980
width=3 => '改' |hex=e694b9
width=3 => '變' |hex=e8ae8a
To Top