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))."..."
mb_strimwidth
(PHP 4 >= 4.0.6, PHP 5)
mb_strimwidth — Obtiene un string truncado con el ancho especificado
Descripción
$str
, int $start
, int $width
[, string $trimmarker
[, string $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
encodinges 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 se añade al final del valor devuelto.
Ejemplos
Ejemplo #1 Ejemplo de mb_strimwidth()
<?php
echo mb_strimwidth("Hello World", 0, 10, "...");
// imprime Hello W...
?>
Ver también
- mb_strwidth() - Deuelve el ancho de un string
- mb_internal_encoding() - Establece/obtiene la codificación de caracteres interna
<?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;
}
?>
