diff --git a/application/routes.php b/application/routes.php index 56ea31be..ff11a9b9 100644 --- a/application/routes.php +++ b/application/routes.php @@ -39,6 +39,7 @@ return array( 'GET /' => function() { + return Laravel\Str::limit('This is a string of text', 3, '...'); return View::make('home.index'); }, diff --git a/laravel/str.php b/laravel/str.php index 5f9b2d9a..8e64eb56 100644 --- a/laravel/str.php +++ b/laravel/str.php @@ -101,11 +101,8 @@ class Str { /** * Limit the number of characters in a string. * - * Word integrity is preserved, so the number of characters in the - * truncated string will be rounded to the nearest word ending. - * * - * // Returns "Taylor..." + * // Returns "Tay..." * echo Str::limit('Taylor Otwell', 3); * * // Limit the number of characters and append a custom ending @@ -113,17 +110,20 @@ class Str { * * * @param string $value - * @param int $length + * @param int $limit * @param string $end * @return string */ public static function limit($value, $limit = 100, $end = '...') { - if (static::length($value) < $limit) return $value; + if (static::length($value) <= $limit) return $value; - $limit = preg_replace('/\s+?(\S+)?$/', '', substr($value, 0, $limit)); + if (function_exists('mb_substr')) + { + return mb_substr($value, 0, $limit, Config::get('application.encoding')).$end; + } - return (static::length($limit) == static::length($value)) ? $value : $limit.$end; + return substr($value, 0, $limit).$end; } /** diff --git a/tests/Cases/StrTest.php b/tests/Cases/StrTest.php index 55b47830..c31cdee1 100644 --- a/tests/Cases/StrTest.php +++ b/tests/Cases/StrTest.php @@ -45,7 +45,7 @@ class StrTest extends PHPUnit_Framework_TestCase { public function test_limit_words() { - $this->assertEquals('This is a...', Laravel\Str::limit_words('This is a string of text', 3, '...')); - $this->assertEquals('This is a string ', Laravel\Str::limit_words('This is a string of text', 4, ' ')); + $this->assertEquals('This is a...', Laravel\Str::words('This is a string of text', 3, '...')); + $this->assertEquals('This is a string ', Laravel\Str::words('This is a string of text', 4, ' ')); } } \ No newline at end of file