lostcause / php-htmltruncator
HTML 截断库,由 html_truncator rubygem 转译而来
1.0.6
2015-03-26 16:23 UTC
Requires
- php: >=5.3.0
- electrolinux/php-html5lib: dev-master
Requires (Dev)
- phpunit/phpunit: 4.4.*
README
这是 html_truncator gem 的 PHP 版本。
它将干净地截断 HTML 内容,在最适合的位置添加省略号或其他标记。如果需要解析非规范化的 HTML5,则可选支持 php-html5lib。这是因为 PHP 的 DOMDocument->loadHTML(或其底层的 libxml)无法识别 HTML5。
在截断过程中,HTML 将被加载到 DOMDocument 中。这可能相对较慢且消耗内存,因此您可能希望缓存截断的输出。
如何使用
HtmlTruncator\Truncator 类只有一个静态方法 truncate
,带有 3 个参数
- 要截断的 HTML 格式化字符串
- 要保留的单词数量(实际单词,标签和属性不计入)
- 一些选项,如省略号(可选,默认为 '…')。如果选项是字符串,则用作省略号
以及一个静态属性 $ellipsable_tags
,它列出可以包含省略号的标签(默认:p ol ul li div header article nav section footer aside dd dt dl)。
示例
一个简单的示例
Truncator::truncate("<p>Lorem ipsum dolor sit amet.</p>", 3);
# => "<p>Lorem ipsum dolor…</p>"
如果文本太短而无法截断,则不会对其进行修改
Truncator::truncate("<p>Lorem ipsum dolor sit amet.</p>", 5);
# => "<p>Lorem ipsum dolor sit amet.</p>"
如果您愿意,可以使用字符长度而不是单词长度
Truncator::truncate("<p>Lorem ipsum dolor sit amet.</p>", 12, array('length_in_chars' => true));
# => "<p>Lorem ipsum …</p>"
您可以自定义省略号
Truncator::truncate("<p>Lorem ipsum dolor sit amet.</p>", 3, " (truncated)");
# => "<p>Lorem ipsum dolor (truncated)</p>"
甚至可以在省略号中包含 HTML
Truncator::truncate("<p>Lorem ipsum dolor sit amet.</p>", 3, '<a href="/more-to-read">...</a>');
# => "<p>Lorem ipsum dolor<a href="/more-to-read">...</a></p>"
省略号放置在正确的位置,在 <p>
内部,而不是 <i>
Truncator::truncate("<p><i>Lorem ipsum dolor sit amet.</i></p>", 3);
# => "<p><i>Lorem ipsum dolor</i>…</p>"
您可以通过将其添加到 ellipsable_tags 来指示标签可以包含省略号
Truncator::$ellipsable_tags[] = "blockquote";
Truncator::truncate("<blockquote>Lorem ipsum dolor sit amet.</blockquote>", 3);
# => "<blockquote>Lorem ipsum dolor…</blockquote>"
致谢
这个 PHP 版本完全基于 Bruno Michel 的优秀 rubygem,任何引入的错误很可能是我造成的。
由 Jude Venn 转译于 2013-07-04 judev@cuttlefish.com,发布于 MIT 许可证下