Displaying a shortened Block of Text with PHP
From time to time, I find myself wanting to display a certain amount of text, like and intro or snippet, from a much larger one. This could be a description or intro for an article, or news item for use on a landing page or latest news widget. For dynamic websites, where content is pulled in automatically from a database, this could cause a bit of problem. The following is a short snippet of PHP code that I use when I want to take a substring of a large chunk of text, and return a specified number of words from the beginning.
//$string: the initial, large chunk of text
//$newstring: smaller portion that you want to display
//$numchars is the max number of characters for the new string
$numchars = 200;
$newstring = preg_replace('/\s+?(\S+)?$/', '',
substr($string, 0, $numchars));
We set our variable $numchars to the maximum number of characters that we want to return. This could be something like 25 for a news headline, or 200 or 300 for a description/intro for a news articles or blog entry.
Now to break down the code:
substr($string, 0, $numchars));
This takes in the initial string, and returns the first $numchars characters. However, this doesn't account for words, it just cuts the string, which could leave you with a piece of text that stops in the middle of a word. To solve this problem, we use the preg_replace function:
preg_replace('/\s+?(\S+)?$/', '', $astring);
This line uses regular expressions to find the last instance of a non-breaking space, and truncates the string at that point. In essence, it cuts off the last incomplete word in the string.
So together:
$newstring = preg_replace('/\s+?(\S+)?$/', '',
substr($string, 0, $numchars));
This shortens your input string to the specified number of characters, and then returns all the words in the new string until the last space. And there it is: a quick, useful and powerful little bit of PHP that can help building and maintaining dynamic websites a lot easier. And this can be combined with more PHP code to strip html tags from the output.
« previousnext »
Comments
There are no comments for this post.
To add a comment, please fill in the form below.