【发布时间】:2011-11-23 01:20:31
【问题描述】:
在我的页面中,我有一些来自 RSS 提要的帖子预览。每个帖子预览显示大约 300 个字符。当用户点击展开按钮时,#post-preview 将替换为#post。 #post 显示帖子的其余部分。
这一切都很好,但#post 的格式不好,不可读。所以我想到了允许<br><b><p>标签,这样就可以被阅读了。因为我不想让用户分心,所以我希望在 300 个字符之后允许标记。
使用下面的方法,可以打破$start结束和$rest开始的一些标签。这意味着没有好的可读输出。
$start = strip_tags(substr($entry->description, 0, 300));
$rest = strip_tags(substr($entry->description, 300), '<b><p><br>');
$start . $rest;
我的问题是如何在 300 字符之前保持 $start 和 $rest 相同(无标签),然后 $rest 将显示格式化的帖子?有没有其他方法可以做到这一点?
这是一个 RSS 提要结构的示例(来自查看页面源)。
<item><guid isPermaLink="false"></guid><pubDate></pubDate><atom:updated></atom:updated><category domain=""></category><title></title><description></description><link></link><author></author></item>
我正在寻找一种不会影响性能的方法。
【问题讨论】:
-
也许您可以遍历所有字符并计算字符 。如果 ,您只需添加更多字符,直到 $start 达到所需的 > 计数。
-
您可以简单地去除所有标签并将前 300 个原始文本字符显示为摘录。毕竟,一篇文章的前 300 个字符完全有可能只有 html 标签,从而使摘录无用。
-
@MarcB 你能给我看个样品吗?我没有完全理解重点......
-
$start = substr(strip_tags($entry->description), 0, 300)。不要试图弄清楚如何在其中保留 html 标签,因为这是一场失败的游戏。通过消除摘录的标签来绕过问题,并为“阅读更多”链接保留完整的文档。单击阅读更多链接时隐藏无标签摘录,仅显示原始完整文档。 -
@MarcB 但这不是我发布的吗?
标签: php javascript jquery xml dom