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 — Get truncated string with specified width
Opis
string mb_strimwidth
( string
$str
, int $start
, int $width
[, string $trimmarker
[, string $encoding
]] )
Truncates string str to specified width.
Parametry
-
str -
The string being decoded.
-
start -
The start position offset. Number of characters from the beginning of string. (First character is 0)
-
width -
The width of the desired trim.
-
trimmarker -
A string that is added to the end of string when string is truncated.
-
encoding -
Parametr
encodingokreśla kodowanie znaków. Jeśli nie jest podany, to zostanie użyta wewnętrzna wartość kodowania zanków.
Zwracane wartości
The truncated string. If trimmarker is set,
trimmarker is appended to the return value.
Przykłady
Przykład #1 mb_strimwidth() example
<?php
echo mb_strimwidth("Hello World", 0, 10, "...");
// outputs Hello W...
?>
Zobacz też:
- mb_strwidth() - Return width of string
- mb_internal_encoding() - Set/Get internal character encoding
josiah dot ritchie at gmail dot com ¶
5 years ago
CBieser ¶
4 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;
}
?>
