mb_strimwidth

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

mb_strimwidthObtiene un string truncado con el ancho especificado

Descripción

string mb_strimwidth ( string $str , int $start , int $width [, string $trimmarker = "" [, string $encoding = mb_internal_encoding() ]] )

Trunca el string str al ancho especificado por width.

Parámetros

str

El string a codificar.

start

El índice de la posición de inicio. El número de caracteres desde el comienzo del string. (El índice del primer carácter es 0)

width

El ancho del recorte deseado.

trimmarker

Un string que se añade al final del string cuando éste es truncado.

encoding

El parámetro encoding es la codificación de caracteres. Si es omitido, será usado el valor de la codificación de caracteres interna.

Valores devueltos

El string truncado. Si se establece trimmarker, trimmarker reemplaza los últimos caracters que coincidan con width.

Ejemplos

Ejemplo #1 Ejemplo de mb_strimwidth()

<?php
echo mb_strimwidth("Hello World"010"...");
// salida: "Hello W..."
?>

Ver también

add a note add a note

User Contributed Notes 4 notes

up
8
josiah dot ritchie at gmail dot com
10 years ago
While having the option to append a string to the end is nice, you can run into the problem of having a space between the append if the width is truncated after a space. I find something like this to be more attractive in the output, although messy in the code.

rtrim(mb_strimwidth($string, 0, 24))."..."
up
0
felixstar4 at gmail dot com
1 month ago
Note that the trimmarker removes characters from the end of the string to trim, so

$hello = 'Lorem ipsum dolor sit amet, lorem ipsum';
$trimmarker = '......................';
echo mb_strimwidth($hello, 0, 20,  $trimmarker);

will only add the values of the trim marker, as the character number of $trimmarker is longer than the specified value to trim to, so it will return:
......................
It is therefore better to use this:
mb_strimwidth($hello, 0, 20). $trimmarker;
as the trimmarker won't remove characters of the string in order to make space for itself. It will return:
Lorem ipsum dolor si......................
up
-15
CBieser
9 years ago
<?php
function strimwidthCenter( $value, $length = 40 ) {
   
$valueEncoding = mb_detect_encoding( $value, 'auto', true );
    if (
$length >= mb_strwidth( $value, $valueEncoding ) ) {
        return
$value;
    }
   
$limited = '';
   
$firstWidth = ceil( $length/2 );
   
$secondStart = mb_strwidth( $value, $valueEncoding ) - ( $length - $firstWidth );
   
$secondWidth = $length - $firstWidth +1;
   
$limited = mb_strimwidth( $value, 0, $firstWidth, '...', $valueEncoding ) . mb_substr( $value, $secondStart, $secondWidth, $valueEncoding );
    return
$limited;
}
?>
up
-53
Rich Mehta
4 years ago
I had a problem (as in another comment) with a space being between the trailing dots and the subject being truncated. Here's how I fixed it:

<?php str_replace( " .", ".", mb_strimwidth( $subject, 0, 30, "..." ) ); ?>
To Top