I was thinking an example might be in order for you. Try this one...
Code: Select all
<?php
/**
* Cuts a string down to a certain length without cutting words.
*
* This function, snagged from the PHP net website, cuts a long string
* into a smaller string without cutting words in half. After the string
* is cut the function appends ' ...' to the end of the string.
*
* @access public
* @param string $string The string to cut short
* @param integer $max_length The length to cut the string to
* @return string A shortened string
*/
function truncate_long_string($string, $max_length) {
if (strlen($string) > $max_length) {
$string = substr($string, 0, $max_length);
if (($pos = strrpos($string, ' ')) === false) {
return substr($string, 0, $max_length) . ' ...';
}
return substr($string, 0, $pos) . ' ...';
} else {
return $string;
}
}
/*
$test_string = 'If only there were a function that would cut strings down but not cut words in the process.';
echo truncate_long_string($test_string, 15) . '<br />';
echo truncate_long_string($test_string, 25) . '<br />';
echo truncate_long_string($test_string, 40) . '<br />';
echo truncate_long_string($test_string, 55) . '<br />';
echo truncate_long_string($test_string, 150) . '<br />';
*/
/**
* Lets test the function out with an array...
* this sort of simulates a long string coming out of a database
*/
$string_array = array();
$string_array[] = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras iaculis vulputate pede. Curabitur tincidunt';
$string_array[] = 'adipiscing nisl. Etiam dignissim vestibulum libero. Sed sit amet nunc vitae purus blandit molestie. Etiam';
$string_array[] = 'at tortor. Curabitur et lorem. Donec quis neque. Donec at dolor. Nulla a justo. Lorem ipsum dolor sit';
$string_array[] = 'amet, consectetuer adipiscing elit.';
$string_array[] = 'Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin nulla odio,';
$string_array[] = 'ornare sit amet, tristique et, fermentum vitae, odio. Nam dictum urna in eros. Fusce malesuada, sem vel';
$string_array[] = 'posuere vestibulum, libero nisi lacinia erat, eget ornare mauris nisl ut arcu. Ut nibh massa, dapibus sit';
$string_array[] = 'amet, venenatis vel, vehicula ac, nunc. Nullam sollicitudin semper magna. Mauris id tellus in ante sodales' ;
$string_array[] = 'fermentum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.';
$string_array[] = 'Nulla faucibus volutpat augue. Ut vulputate nulla sit amet odio. Maecenas rutrum. Proin lacinia ipsum eu metus.';
$string_array[] = 'Donec feugiat laoreet risus. Sed augue elit, posuere et, elementum sit amet, viverra eget, mauris. Proin quam.';
$string_array[] = 'Phasellus risus erat, dictum eget, euismod ut, posuere ac, erat.';
$string_array[] = 'Aliquam non odio. Phasellus ligula dui, gravida vitae, varius non, posuere at, ligula. In convallis, mauris';
$string_array[] = 'et lacinia elementum, felis libero ornare elit, accumsan consequat arcu turpis eu odio. Nulla facilisi.';
$string_array[] = 'Mauris venenatis, felis et porttitor gravida, nunc risus semper eros, vitae mattis nulla turpis nec enim.';
$string_array[] = 'Donec vel tortor. Duis consectetuer rhoncus elit. Duis nec eros. Mauris sagittis. Fusce elit. Integer';
$string_array[] = 'scelerisque tristique turpis. Proin volutpat sapien at erat. Pellentesque tincidunt, nisl at accumsan';
$string_array[] = 'dictum, nulla dolor porta pede, a fermentum ante pede ut purus. Integer lacinia, purus sit amet sagittis';
$string_array[] = 'aliquet, odio leo varius nunc, vel rhoncus pede tellus ut arcu.';
$string_array[] = 'In porttitor, turpis et varius gravida, metus ligula bibendum purus, ac tincidunt nunc tortor a diam.';
$string_array[] = 'Vivamus semper. Quisque fringilla, ipsum non pretium commodo, mauris neque nonummy massa, ac lacinia';
$string_array[] = 'tortor pede nonummy lorem. Vivamus scelerisque mollis orci. In ac lorem id tortor laoreet vestibulum.';
$string_array[] = 'Aenean congue dui non arcu. Aliquam erat volutpat. Nulla aliquam nulla a magna. Aenean ornare pretium';
$string_array[] = 'dolor. Integer ut purus. In suscipit tempor est.';
$string_array[] = 'Aliquam erat volutpat. Duis faucibus nulla quis neque. Quisque ac quam. Cum sociis natoque penatibus';
$string_array[] = 'et magnis dis parturient montes, nascetur ridiculus mus. Aliquam cursus ligula et tellus pharetra lobortis.';
$string_array[] = 'Sed velit dui, sagittis ut, dignissim vitae, rutrum in, odio. Proin sed odio. Sed auctor, eros euismod';
$string_array[] = 'cursus placerat, purus purus convallis leo, eget mollis odio odio condimentum urna. Aenean euismod laoreet';
$string_array[] = 'felis. Mauris vitae augue id augue euismod tincidunt. Fusce congue, libero at luctus ornare, turpis diam';
$string_array[] = 'lobortis elit, ac laoreet mauris orci sit amet turpis. Nulla a tellus vel erat semper mollis. Morbi ut';
$string_array[] = 'arcu vitae eros accumsan malesuada. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur';
$string_array[] = 'ridiculus mus. Integer ullamcorper felis blandit est. Vivamus ornare.';
/**
* To what length do we wish to cut the string?
*/
$string_cut = 30;
/**
* For clean coding, set our loop limit here
*/
$string_count = count($string_array);
/**
* Start outputting
*/
echo '<ul>';
for ($i = 0; $i < $string_count; $i++)
{
echo '<li>' . truncate_long_string($string_array[$i], $string_cut) . '</li>';
}
echo '</ul>';