Last 5.3 release ever available: PHP 5.3.29 - 5.3 now EOL

mb_strimwidth

(PHP 4 >= 4.0.6, PHP 5)

mb_strimwidth指定した幅で文字列を丸める

説明

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

文字列 str を指定した幅 width で丸めます。

パラメータ

str

丸めたい文字列。

start

開始位置のオフセット。文字列の始めからの文字数 (最初の文字は 0) です。

width

丸める幅。

trimmarker

丸めた後にその文字列の最後に追加される文字列。

encoding

encoding パラメータには文字エンコーディングを指定します。省略した場合は、 内部文字エンコーディングを使用します。

返り値

丸められた文字列を返します。 trimmarker が設定された場合、 trimmarker が丸められた文字列に追加されます。

例1 mb_strimwidth() の例

<?php
echo mb_strimwidth("Hello World"010"...");
// Hello W... と出力します
?>

参考

add a note add a note

User Contributed Notes 3 notes

up
1
josiah dot ritchie at gmail dot com
6 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
-1
CBieser
5 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
-2
Rich Mehta
2 months 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