From 01d6b4f663588e80ca43deafc40090c910eb4b35 Mon Sep 17 00:00:00 2001 From: Derek Jones Date: Tue, 3 Feb 2009 14:51:00 +0000 Subject: Fixed a bug where the end character was being added when the character limit's limit intersected the last word of the string. http://expressionengine.com/forums/viewthread/103748/ --- system/helpers/text_helper.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'system') diff --git a/system/helpers/text_helper.php b/system/helpers/text_helper.php index e79a2419d..fa1de8bc6 100644 --- a/system/helpers/text_helper.php +++ b/system/helpers/text_helper.php @@ -87,14 +87,16 @@ if ( ! function_exists('character_limiter')) { return $str; } - + $out = ""; foreach (explode(' ', trim($str)) as $val) { - $out .= $val.' '; + $out .= $val.' '; + if (strlen($out) >= $n) { - return trim($out).$end_char; + $out = trim($out); + return (strlen($out) == strlen($str)) ? $out : $out.$end_char; } } } @@ -236,7 +238,7 @@ if ( ! function_exists('word_censor')) // \w, \b and a few others do not match on a unicode character // set for performance reasons. As a result words like über // will not match on a word boundary. Instead, we'll assume that - // a bad word will be bookeneded by any of these characters. + // a bad word will be bookended by any of these characters. $delim = '[-_\'\"`(){}<>\[\]|!?@#%&,.:;^~*+=\/ 0-9\n\r\t]'; foreach ($censored as $badword) -- cgit v1.2.3-24-g4f1b