I had previously written about how you can easily trim your text using a build in WordPress function called wp_trim_words() but sometimes you actually want to trim your text to a specific number of characters as opposed to actual words. Here is a short function that will do just that. If you want to use it in a WordPress theme, just place it within the PHP tags in your functions.php file.

/**
 * Trims a string of words to a specified number of characters, gracefully stopping at white spaces.
 * Also strips HTML tags, to prevent breaking in the middle of a tag.
 *
 * @param	string $text  The string of words to be trimmed.
 * @param	int $length  Maximum number of characters; defaults to 45.
 * @param	string $append  String to append to end, when trimmed; defaults to ellipsis.
 *
 * @return	String of words trimmed at specified character length.
 *
 * @author c.bavota
 */
function trim_characters( $text, $length = 45, $append = '…' ) {

	$length = (int) $length;
	$text = trim( strip_tags( $text ) );

	if ( strlen( $text ) > $length ) {
		$text = substr( $text, 0, $length + 1 );
		$words = preg_split( "/[\s]| /", $text, -1, PREG_SPLIT_NO_EMPTY );
		preg_match( "/[\s]| /", $text, $lastchar, 0, $length );
		if ( empty( $lastchar ) )
			array_pop( $words );

		$text = implode( ' ', $words ) . $append;
	}

	return $text;
}

With the function in place, you can use something similar to the following to trim your text strings:

$string = "This is a string of text that I want to trim down to a specific number of characters.";
trim_characters( $string ); // Output: This is a string of text that I want to trim...