lostcause/php-htmltruncator

HTML 截断库,由 html_truncator rubygem 转译而来

1.0.6 2015-03-26 16:23 UTC

This package is auto-updated.

Last update: 2024-09-24 16:29:05 UTC


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 许可证下