mb_str_truncateVersion: 1.0 (PHP 4 >= 4.0.6) Kürzt einen Text auf eine bestimmte Anzahl Zeichen und fügt dann beispielsweise ellipsis (...) ein. Beschreibungstring mb_str_truncate(string $input, int $max_length [, string $trunc_string = '...' [, string $trunc_type = STR_TRUNC_RIGHT [, string $encoding = NULL]]])
Kürzt einen Text und fügt beispielsweise ellipsis (...) ein. Der Text kann am Ende, am Anfang, in der Mitte oder an beiden Enden gekürzt werden. Parameter-Liste
Rückgabewerte(string) Die Funktion gibt den gekürzten $input mit einer maximalen Länge von $max_length zurück. Quelltext
define('STR_TRUNC_RIGHT' , 0);
define('STR_TRUNC_LEFT' , 1);
define('STR_TRUNC_BOTH' , 2);
define('STR_TRUNC_MIDDLE', 3);
function mb_str_truncate($input
, $max_length
, $trunc_string = '...'
, $trunc_type = STR_TRUNC_RIGHT
, $encoding = NULL)
{
if($encoding === NULL)
$encoding = mb_internal_encoding();
$InputLength = mb_strlen($input, $encoding);
if($InputLength > $max_length)
{
if($max_length > 0)
{
$TruncStringLength = mb_strlen($trunc_string, $encoding);
switch($trunc_type)
{
case STR_TRUNC_LEFT:
if($max_length > $TruncStringLength)
{
$input = $trunc_string
. mb_substr($input
, $InputLength - $max_length + $TruncStringLength
, $max_length - $TruncStringLength, $encoding);
}
else
$input = mb_substr($trunc_string, 0, $max_length, $encoding);
break;
case STR_TRUNC_BOTH:
$PartLength = $max_length - $TruncStringLength * 2;
if($PartLength > 0)
{
$Start = floor(($InputLength - $PartLength) / 2);
$input = $trunc_string
. mb_substr($input, $Start
, $max_length - $TruncStringLength * 2
, $encoding)
. $trunc_string;
}
else
$input = mb_substr($trunc_string . $trunc_string, 0
, $max_length, $encoding);
break;
case STR_TRUNC_MIDDLE:
if($max_length > $TruncStringLength)
{
$PartLength = ceil(($max_length - $TruncStringLength) / 2);
$RightStart = $InputLength
- ($max_length - $TruncStringLength - $PartLength);
$input = mb_substr($input, 0, $PartLength, $encoding)
. $trunc_string
. mb_substr($input, $RightStart
, $max_length - $PartLength - $TruncStringLength
, $encoding);
}
else
$input = mb_substr($trunc_string, 0, $max_length, $encoding);
break;
default: // STR_TRUNC_RIGHT
if($max_length > $TruncStringLength)
{
$input = mb_substr($input, 0, $max_length - $TruncStringLength
, $encoding)
. $trunc_string;
}
else
$input = mb_substr($trunc_string, 0, $max_length, $encoding);
break;
}
}
else
$input = '';
}
return $input;
}
Beispiel
echo 'mb_str_truncate Tests',"\n";
echo '=====================',"\n";
echo "\n";
$max_length = 6;
$trunc_string = "\xE2\x80\xA6";
$Tests = array(
array('input' => '0123456789', 'max_length' => $max_length
, 'trunc_string' => $trunc_string, 'trunc_type' => STR_TRUNC_RIGHT)
, array('input' => '0123456789', 'max_length' => $max_length
, 'trunc_string' => $trunc_string, 'trunc_type' => STR_TRUNC_LEFT)
, array('input' => '0123456789ABCDEF', 'max_length' => $max_length
, 'trunc_string' => $trunc_string, 'trunc_type' => STR_TRUNC_BOTH)
, array('input' => '0123456789ABCDEF', 'max_length' => $max_length
, 'trunc_string' => $trunc_string, 'trunc_type' => STR_TRUNC_MIDDLE)
);
for($i = 0, $z = count($Tests); $i < $z; ++$i)
{
if($i > 0)
echo "--------------------------\n";
echo 'Eingabe: ',$Tests[$i]['input'],"\n";
echo 'max_length: ',$Tests[$i]['max_length'],"\n";
echo 'trunc_string: ',$Tests[$i]['trunc_string'],"\n";
echo 'trunc_type: ',$Tests[$i]['trunc_type'],"\n";
echo 'Ausgabe: ',mb_str_truncate($Tests[$i]['input']
, $Tests[$i]['max_length']
, $Tests[$i]['trunc_string']
, $Tests[$i]['trunc_type']
, 'UTF-8'),"\n";
}
Ausgabemb_str_truncate Tests ===================== Eingabe: 0123456789 max_length: 6 trunc_string: … trunc_type: 0 Ausgabe: 01234… -------------------------- Eingabe: 0123456789 max_length: 6 trunc_string: … trunc_type: 1 Ausgabe: …56789 -------------------------- Eingabe: 0123456789ABCDEF max_length: 6 trunc_string: … trunc_type: 2 Ausgabe: …6789… -------------------------- Eingabe: 0123456789ABCDEF max_length: 6 trunc_string: … trunc_type: 3 Ausgabe: 012…EF Changelog
QuelleEntwurf und Umsetzung Frank Olschewski. LizenzDie hier angezeigten Funktionen und Beispiele können ohne jegliche Einschränkung benutzt und verändert werden. Sollte diese Funktion an anderer Stelle veröffentlicht werden oder in freien oder kommerziellen Projekten ohne nennenswerte Änderungen verwendung finden, gebietet es die Fairness mich und diese Seite als Quelle zu nennen. HaftungsausschlussDie hier angezeigten Funktionen und Beispiele sind sorgfältig programmiert und getestet, es kann jedoch keinerlei Garantie oder Haftung für Fehlerfreiheit und korrektes Funktionieren übernommen werden. 07/02/10 |