/** * Test that truncate() trims text while preserving HTML and trailing words. */ public function testTruncate() { $string = 'This has <a href="/" class="link">anchor tags</a> & entities in it. It has "quotes" as well.'; // Preserve HTML and word $this->assertEquals('This has <a href="/" class="link">anchor</a>…', String::truncate($string, 15)); $this->assertEquals('This has <a href="/" class="link">anchor tags</a> &…', String::truncate($string, 25)); $this->assertEquals('This has <a href="/" class="link">anchor tags</a> & entities in…', String::truncate($string, 35)); $this->assertEquals('This has <a href="/" class="link">anchor tags</a> & entities in it. It…', String::truncate($string, 45)); $this->assertEquals('This has <a href="/" class="link">anchor tags</a> & entities in it. It has "quotes" as well.', String::truncate($string, false)); // Preserve HTML $this->assertEquals('This has <a href="/" class="link">anch</a>…', String::truncate($string, 13, array('word' => false))); $this->assertEquals('This has <a href="/" class="link">anchor tags</a> & en…', String::truncate($string, 25, array('word' => false))); $this->assertEquals('This has <a href="/" class="link">anchor tags</a> & entities in…', String::truncate($string, 35, array('word' => false))); $this->assertEquals('This has <a href="/" class="link">anchor tags</a> & entities in it. It has…', String::truncate($string, 45, array('word' => false))); $this->assertEquals('This has <a href="/" class="link">anchor tags</a> & entities in it. It has "quo…', String::truncate($string, 50, array('word' => false))); // Preserve none $this->assertEquals('This has anchor tags & en…', String::truncate($string, 25, array('word' => false, 'html' => false))); $this->assertEquals('This has anchor tags & entities in…', String::truncate($string, 35, array('word' => false, 'html' => false))); $this->assertEquals('This has anchor tags & entities in it. It has…', String::truncate($string, 45, array('word' => false, 'html' => false))); $this->assertEquals('This has anchor tags & entities in it. It has "quotes" as well.', String::truncate($string, false, array('word' => false, 'html' => false))); // Preserve none with custom suffix $this->assertEquals('This has anchor tags & en...', String::truncate($string, 25, array('word' => false, 'html' => false, 'suffix' => '...'))); $this->assertEquals('This has anchor tags & entities in...', String::truncate($string, 35, array('word' => false, 'html' => false, 'suffix' => '...'))); $this->assertEquals('This has anchor tags & entities in it. It has...', String::truncate($string, 45, array('word' => false, 'html' => false, 'suffix' => '...'))); $this->assertEquals('This has anchor tags & entities in it. It has "quotes" as well.', String::truncate($string, false, array('word' => false, 'html' => false, 'suffix' => '...'))); // Custom tags (BB code) $string = 'This has [url="/"]anchor tags[/url] & entities in it. It has "quotes" as well.'; $this->assertEquals('This has [url="/"]anchor[/url]…', String::truncate($string, 15, array('open' => '[', 'close' => ']'))); $this->assertEquals('This has [url="/"]anchor tags[/url] &…', String::truncate($string, 25, array('open' => '[', 'close' => ']'))); $this->assertEquals('This has [url="/"]anchor tags[/url] & entities in…', String::truncate($string, 35, array('open' => '[', 'close' => ']'))); $this->assertEquals('This has [url="/"]anchor tags[/url] & entities in it. It…', String::truncate($string, 45, array('open' => '[', 'close' => ']'))); $this->assertEquals('This has [url="/"]anchor tags[/url] & entities in it. It has "quotes" as well.', String::truncate($string, false, array('open' => '[', 'close' => ']'))); }
function str_truncate($string, $limit = 25, array $options = array()) { return String::truncate($string, $limit, $options); }