<?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;
}
?>
mb_strimwidth
(PHP 4 >= 4.0.6, PHP 5)
mb_strimwidth — Get truncated string with specified width
Popis
string mb_strimwidth
( string $str
, int $start
, int $width
[, string $trimmarker
[, string $encoding
]] )
mb_strimwidth() truncates string str to specified width . It returns truncated string.
If trimmarker is set, trimmarker is appended to return value.
start is start position offset. Number of characters from the beginning of string. (First character is 0)
trimmarker is string that is added to the end of string when string is truncated.
encoding is character encoding. If it is omitted, internal encoding is used.
Example#1 mb_strimwidth() example
<?php
$str = mb_strimwidth($str, 0, 40, "..>");
?>
See also mb_strwidth() and mb_internal_encoding().
mb_strimwidth
CBieser
26-Aug-2008 12:50
26-Aug-2008 12:50
josiah dot ritchie at gmail dot com
13-Sep-2007 11:48
13-Sep-2007 11:48
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))."..."
