Техника no1: простая
function myTruncate($string, $limit, $break=".", $pad="… ") ( if(strlen($string) <= $limit) return $string; if(false !== ($breakpoint = strpos($string, $break, $limit))) ( if($breakpoint < strlen($string) - 1) ( $string = substr($string, 0, $breakpoint) . $pad; ) ) return $string; )
Техника # 2: простая
function ellipsis($text, $max=100, $append='… ') ( if (strlen($text) <= $max) return $text; $out = substr($text,0,$max); if (strpos($text,' ') === FALSE) return $out.$append; return preg_replace('/\w+$/','',$out).$append; )
Использование:
Техника № 3: Дополнительные параметры
Варианты использования PHP php_tidy для исправления поврежденного HTML или полного удаления HTML.
function summarise( $input, $break = " ", $end_text = "… ", $limit = 255, $tidy_html = 1, $strip_html = 0 ) ( if ( strlen( $input ) >= $limit ) ( $breakpoint = strpos( $input, $break, $limit ); $input = substr( $input, 0, $breakpoint ) . $end_text; ) if ( $tidy_html == 1 ) ( ob_start( ); $tidy = new tidy; $config = array( 'indent' => true, 'output-xhtml' => true, 'wrap' => 200, 'clean' => true, 'show-body-only' => true ); $tidy->parseString( $input, $config, 'utf8' ); $tidy->cleanRepair( ); $input = $tidy; ) if ( $strip_html == 1 ) ( $input = strip_tags( $input ); ) return $input; )
Техника №4: Без функции
$max_length) ( $short_text = (substr($long_text,0,$max_length-1)); // make it $max_length chars long $short_text .= "… "; // add an ellipses… at the end $short_text .= "Read more"; // add a link echo $short_text; ) else ( // string is already less than $max_length, so display the string as is echo $long_text; ) ?>