Friday, 10 August 2018

Getting An Excerpt Of Text With PHP

I have talked before about truncating strings to include whole words, but what if you want to have complete sentences? The following function will truncate a string the number of words specified and until the sentence ends.
  1. function excerpt($paragraph, $limit)
  2. {
  3. $tok = strtok($paragraph, " ");
  4. while ($tok !== false) {
  5. $text .= " ".$tok;
  6. $words++;
  7. if (($words >= $limit) && ((substr($tok, -1) == "!") || (substr($tok, -1) == ".") || (substr($tok, -1) == "?"))) {
  8. break;
  9. }
  10. $tok = strtok(" ");
  11. }
  12. return ltrim($text);
  13. }
Using this function you can create an excerpt of any text you want, as long as it has a sentence in it. Take the following section of text.
$string = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas sollicitudin. Suspendisse potenti. Mauris lorem elit, sodales at, aliquet eu, porta vitae, velit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus rhoncus ipsum non urna. Donec et quam. Sed vel lectus in enim porttitor vulputate. Vestibulum at nisi a nulla vulputate mattis. Integer luctus mauris id dolor. In hac habitasse platea dictumst. Aliquam placerat consectetuer ipsum.  Aliquam erat volutpat. Fusce ac nisi a neque laoreet feugiat. Fusce euismod ligula sit amet enim. Sed quis leo. Aenean vel nisi in nunc accumsan accumsan. Nullam egestas orci ut justo. Pellentesque suscipit. Suspendisse pretium fermentum nunc. Mauris ac orci vel nibh facilisis sollicitudin. Pellentesque mattis metus eu mi. Curabitur pharetra ante nec enim. Vestibulum pede.  Maecenas sodales tincidunt erat. Mauris tincidunt. Mauris justo sem, malesuada quis, ultricies non, malesuada nec, lorem. Vivamus laoreet lacus id lorem. Nulla rutrum nisi et urna. Praesent nec turpis ac orci feugiat egestas. Nunc tellus justo, pretium ac, molestie a, luctus a, lacus. Nunc pellentesque iaculis dui. Morbi vel sapien id ligula laoreet euismod. Sed convallis est eu mi. Nam suscipit, eros eu imperdiet malesuada, odio velit iaculis ipsum, eu accumsan ipsum metus id ipsum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Integer urna. In orci est, semper vitae, adipiscing sed, tempor vel, massa. Sed venenatis, augue eu ornare ullamcorper, nulla enim mollis neque, nec luctus nunc risus non risus. Curabitur mattis arcu mollis magna. Maecenas sagittis metus a dolor. Aliquam accumsan lacinia sem. In hac habitasse platea dictumst.';
This can be passed through the function to get the first 50 words and the rest of the ending sentence like this.
echo excerpt($string, 50);
Produces the following output.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas sollicitudin. Suspendisse potenti. Mauris lorem elit, sodales at, aliquet eu, porta vitae, velit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus rhoncus ipsum non urna. Donec et quam. Sed vel lectus in enim porttitor vulputate. Vestibulum at nisi a nulla vulputate mattis.

0 comments:

Post a Comment