【问题标题】:How to shorten HTML text in Php [duplicate]如何在 PHP 中缩短 HTML 文本 [重复]
【发布时间】:2013-04-18 22:37:38
【问题描述】:

可能重复:
PHP: Truncate HTML, ignoring tags

我在 db 中保存了 html 数据。我想将 html 显示为缩短的.. 我尝试像这样使用mb_strstr 函数;

$str = mb_strstr($this->htmlData, "</p>",true);
echo $str."</p>";

它与 html 的第一段相呼应。但问题是管理面板中填充了 html,有时第一段没有足够的文本。 我也不想在substr 中使用固定字符位置,因为有时可以说 200 个字符可以是 html 标记,因此它会产生无效格式的 html 格式输出。

所以我想学习这类问题的最佳实践。

谢谢。

【问题讨论】:

  • 这里有一些乐趣。要学习的教训是不要将 html 存储在数据库中。带有关闭 p 标签的 mb_strstr 应该可以防止它在一个标签中分裂,但这并不意味着你没有在一个让另一个标签敞开的地方分裂。
  • 不将其存储在数据库中是什么意思?它有点像 wordpress 的 cms。用户在 WYSIWYG 编辑器中输入博客文章,然后将 html 源代码保存在 db 中。这里到底有什么问题?
  • 我只是个傻瓜。您可以存储使用 strip_tags() 删除 html 的摘要,但这在其他方面可能不可靠。可能比尝试正则表达式字符串并在读取时关闭所有标签更痛苦。

标签: php html


【解决方案1】:

在您的所见即所得编辑器中添加一些自定义标签或代码(例如:&lt;separator&gt;...)。您可以使用它将介绍部分与文章的其余部分分开。这将帮助您避免在介绍部分未封闭的 PHP 标记混乱。它还为作者提供了手动决定文本的哪一部分适合介绍的选项。

另一个明智的做法是在数据库中为介绍部分创建一个单独的字段。是的,它会花费更多的内存,但它会给作者一个选项来编写多汁的介绍文本,让更多的人打开全文......

【讨论】:

  • 其实我喜欢有自定义标签的想法。但是对于管理员用户来说效率低下,用新标签编辑 html。也许在 WYSIWYG 上实现一个新的自定义按钮以自动为用户完成它。无论如何这也是另一项努力,我不想在编辑器上实现焦点。新列看起来有点不友好。
  • 除非您自动执行,否则对用户透明。他们不需要了解新领域。您使用的是打包的 CMS 还是您自己的?
  • 我正在使用我自己的 CKEditor @KaiQing 实现
  • 我找到了这个stackoverflow.com/questions/1193500/… 你对性能的看法如何?
  • 我认为如果您在更新(添加/编辑)时截断并将结果保存在自己的字段中,性能将不是问题。由于您使用的是自己的东西,因此您可以完全控制。
猜你喜欢
  • 2012-04-11
  • 2017-12-04
  • 1970-01-01
  • 2013-04-23
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多