mirror of
https://github.com/smarty-php/smarty.git
synced 2025-10-25 10:21:36 +02:00
34 lines
923 B
PHP
34 lines
923 B
PHP
|
|
<?php
|
||
|
|
|
||
|
|
/*
|
||
|
|
* Smarty plugin
|
||
|
|
* -------------------------------------------------------------
|
||
|
|
* Type: modifier
|
||
|
|
* Name: truncate
|
||
|
|
* Purpose: Truncate a string to a certain length if necessary,
|
||
|
|
* optionally splitting in the middle of a word, and
|
||
|
|
* appending the $etc string.
|
||
|
|
* -------------------------------------------------------------
|
||
|
|
*/
|
||
|
|
function smarty_modifier_truncate($string, $length = 80, $etc = '...',
|
||
|
|
$break_words = false)
|
||
|
|
{
|
||
|
|
if ($length == 0)
|
||
|
|
return '';
|
||
|
|
|
||
|
|
if (strlen($string) > $length) {
|
||
|
|
$length -= strlen($etc);
|
||
|
|
$fragment = substr($string, 0, $length+1);
|
||
|
|
if ($break_words)
|
||
|
|
$fragment = substr($fragment, 0, -1);
|
||
|
|
else
|
||
|
|
$fragment = preg_replace('/\s+(\S+)?$/', '', $fragment);
|
||
|
|
return $fragment.$etc;
|
||
|
|
} else
|
||
|
|
return $string;
|
||
|
|
}
|
||
|
|
|
||
|
|
/* vim: set expandtab: */
|
||
|
|
|
||
|
|
?>
|