mb_strimwidth

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

mb_strimwidthObtém string truncada com largura especificada

Descrição

mb_strimwidth(
    string $string,
    int $start,
    int $width,
    string $trim_marker = "",
    ?string $encoding = null
): string

Trunca a string string para a largura especificada width, onde caracteres de meia largura contam como 1, e caracteres de largura total contam como 2. Consulte » http://www.unicode.org/reports/tr11/ para detalhes sobre larguras de caracteres do leste asiático.

Parâmetros

string

A string a ser decodificada.

start

O deslocamento da posição inicial. Número de caracteres a partir do início da string (o primeiro caractere é 0), ou se start for negativo, o número de caracteres a partir do final da string.

width

A largura do corte desejado. Se uma largura negativa for especificada, conta a partir do final da string.

Nota:

Passar uma largura negativa foi descontinuado a partir do PHP 8.3.0.

trim_marker

Uma string que é adicionada ao final de string quando a string é truncada.

encoding

O parâmetro encoding é a codificação de caracteres. Se for omitido ou null, o valor da codificação de caracteres interna será usado.

Valor Retornado

A string truncada. Se trim_marker estiver definido, trim_marker substitui os últimos caracteres para corresponder à width.

Registro de Alterações

Versão Descrição
8.3.0 Passar uma largura negativa width para mb_strimwidth() agora foi descontinuado.
8.0.0 O parâmetro encoding agora pode ser nulo.
7.1.0 Adicionado suporte para starts e widths negativos.

Exemplos

Exemplo #1 Exemplo de mb_strimwidth()

<?php
echo mb_strimwidth("Hello World", 0, 10, "...");
// saída: "Hello W..."
?>

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 2 notes

up
1
jamesgrimshaw2006 at gmail dot com
1 year ago
mb_strimwidth will only append "trim_marker" if the string is over the width.*test code*     $HashTags = 'Results';     $socialmediatext = 'abcdefghijklmnopqrstuvwxyz';     for( $i=0; $i<=20; $i++ )     {         $socialmediatext .= '.';         $Twittext = mb_strimwidth($socialmediatext,0,35,$HashTags);         echo "<p>[".strlen($Twittext)."]$Twittext</p>";     }*output*[27]abcdefghijklmnopqrstuvwxyz.[28]abcdefghijklmnopqrstuvwxyz..[29]abcdefghijklmnopqrstuvwxyz...[30]abcdefghijklmnopqrstuvwxyz....[31]abcdefghijklmnopqrstuvwxyz.....[32]abcdefghijklmnopqrstuvwxyz......[33]abcdefghijklmnopqrstuvwxyz.......[34]abcdefghijklmnopqrstuvwxyz........[35]abcdefghijklmnopqrstuvwxyz.........[35]abcdefghijklmnopqrstuvwxyz..Results[35]abcdefghijklmnopqrstuvwxyz..Results[35]abcdefghijklmnopqrstuvwxyz..Results[35]abcdefghijklmnopqrstuvwxyz..Results[35]abcdefghijklmnopqrstuvwxyz..Results[35]abcdefghijklmnopqrstuvwxyz..Results[35]abcdefghijklmnopqrstuvwxyz..Results[35]abcdefghijklmnopqrstuvwxyz..Results[35]abcdefghijklmnopqrstuvwxyz..Results[35]abcdefghijklmnopqrstuvwxyz..Results[35]abcdefghijklmnopqrstuvwxyz..Results[35]abcdefghijklmnopqrstuvwxyz..Results
up
0
dregad at NOSPAM-mantisbt dot org
2 years ago
I see a lot of usage in the field where people rely on this function to truncate a string to a given length and append some chars at the end following example #1 in the above documentation.While this works just fine with Western alphabets, it should be noted that a string's width is NOT necessarily the same as its length.In Chinese, Japanese and Korean, some characters can be represented as full or half width, which may lead to unexpected results...<?php$str = ['English' => 'Switzerland',        'Half width' => 'スイス',        'Full width' => 'スイス',       ];foreach ($str as $w => $s) {    printf("%-10s: %s (bytes=%d chars=%d width=%d)\nSubstring : %s\nTrim width: %s\n\n",        $w, $s,        strlen($s), mb_strlen($s), mb_strwidth($s),        mb_substr($s, 0, 3),        mb_strimwidth($s, 0, 3)    );}/* Output# With ASCII, chars == width, so everything works as expectedEnglish   : Switzerland (bytes=11 chars=11 width=11)Substring : SwiTrim width: Swi# With half-width katakanas, it works tooHalf width: スイス (bytes=9 chars=3 width=3)Substring : スイスTrim width: スイス# Full-width katakanas are twice as wide, so we only get the 1st 'su' !Full width: スイス (bytes=9 chars=3 width=6)Substring : スイスTrim width: ス*/>?
To Top