PHP 7.2.0 Release Candidate 4 Released

mb_strwidth

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

mb_strwidthВозвращает ширину строки

Описание

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

Возвращает ширину строки string 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

Исходная строка string.

encoding

Параметр encoding представляет собой символьную кодировку. Если он опущен, вместо него будет использовано значение внутренней кодировки.

Возвращаемые значения

Ширина строки string str.

Смотрите также

  • mb_strimwidth() - Получение строки, обрезанной до заданного размера
  • mb_internal_encoding() - Установка/получение внутренней кодировки скрипта

add a note add a note

User Contributed Notes 4 notes

up
1
Anonymous
9 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
3 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()
up
-6
larry1chan at gmail dot com
9 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
-11
chiangtor at gmail dot com
4 years 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