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 — Tronque une chaîne
Description
string mb_strimwidth
( string
$str
, int $start
, int $width
[, string $trimmarker
[, string $encoding
]] )
Tronque la chaîne str à la longueur width.
Liste de paramètres
-
str -
La chaîne à tronquer.
-
start -
startest l'offset de départ, en nombre de caractères depuis le début de la chaîne (cela commence à 0). -
width -
La taille à tronquer.
-
trimmarker -
trimmarkerest la chaîne ajoutée à la fin de la chaîne tronquée. -
encoding -
Le paramètre
encodingest 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éfini,
trimmarker sera ajouté à la valeur retournée.
Exemples
Exemple #1 Exemple avec mb_strimwidth()
<?php
echo mb_strimwidth("Hello World", 0, 10, "...");
// Affiche : Hello W...
?>
Voir aussi
- mb_strwidth() - Retourne la taille d'une chaîne
- mb_internal_encoding() - Lit/modifie l'encodage interne
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;
}
?>
