mb_strimwidth

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

mb_strimwidthTronque une chaîne

Description

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

Tronque la chaîne str à la longueur width.

Liste de paramètres

str

La chaîne à tronquer.

start

start est la position de départ, en nombre de caractères depuis le début de la chaîne (premier charactère est 0), ou si la position est négative, nombre de charactères à partir de la fin de la chaîne de caractères.

width

La taille à tronquer. Les tailles négétives compte à partir de la fin de la chaîne de caractères.

trimmarker

trimmarker est la chaîne ajoutée à la fin de la chaîne tronquée.

encoding

Le paramètre encoding est l'encodage des caractères. S'il est omis, l'encodage de caractres interne sera utilisé.

Valeurs de retour

La chaîne tronquée. Si trimmarker est définit, trimmarker remplace les derniers charactères pour correspondre à la taille width.

Historique

Version Description
7.1.0 Support pour starts et widths négatifs a été ajouté.

Exemples

Exemple #1 Exemple avec mb_strimwidth()

<?php
echo mb_strimwidth("Hello World"010"...");
// Affiche : "Hello W..."
?>

Voir aussi

add a note add a note

User Contributed Notes 4 notes

up
1
felixstar4 at gmail dot com
1 year ago
Note that the trimmarker removes characters from the end of the string to trim, so

$hello = 'Lorem ipsum dolor sit amet, lorem ipsum';
$trimmarker = '......................';
echo mb_strimwidth($hello, 0, 20,  $trimmarker);

will only add the values of the trim marker, as the character number of $trimmarker is longer than the specified value to trim to, so it will return:
......................
It is therefore better to use this:
mb_strimwidth($hello, 0, 20). $trimmarker;
as the trimmarker won't remove characters of the string in order to make space for itself. It will return:
Lorem ipsum dolor si......................
up
6
josiah dot ritchie at gmail dot com
11 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
-17
CBieser
10 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
-58
Rich Mehta
4 years 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