<?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 — 指定した幅で文字列を丸める
説明
string mb_strimwidth
( string $str
, int $start
, int $width
[, string $trimmarker
[, string $encoding
]] )
文字列 str を指定した幅 width で丸めます。
パラメータ
- str
-
丸めたい文字列。
- start
-
開始位置のオフセット。文字列の始めからの文字数 (最初の文字は 0) です。
- width
-
丸める幅。
- trimmarker
-
丸めた後にその文字列の最後に追加される文字列。
- encoding
-
encoding パラメータには文字エンコーディングを指定します。省略した場合は、 内部文字エンコーディングを使用します。
返り値
丸められた文字列を返します。 trimmarker が設定された場合、 trimmarker が丸められた文字列に追加されます。
例
例1 mb_strimwidth() の例
<?php
$str = mb_strimwidth($str, 0, 40, "..>");
?>
mb_strimwidth
CBieser
26-Aug-2008 09:50
26-Aug-2008 09:50
josiah dot ritchie at gmail dot com
13-Sep-2007 08:48
13-Sep-2007 08: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))."..."
