2012-02-08 75 views
2

我们有自己的博客系统,发布的数据存储原始html,所以当从db调用它时,我们可以将它回显并完全格式化,不需要BB代码在我们的情况。我们现在的问题是,我们的博客帖子有时太长,需要修剪。php字符限制(修剪html段落)

问题是我们的数据包含html,主要是<font>,<span>,<p>,<b>和其他样式标签。我做了一个修剪字符的php函数,但是它没有考虑到html标签。如果修剪功能修剪博客,它不应该修剪标签,因为它会弄乱整个页面。该功能需要能够关闭html标签,如果它们被修剪。有没有可以做到这一点的功能?或者我可以从中开始构建的功能?

+0

由于HTML性质而不是一件容易的事情 – dynamic 2012-02-08 22:33:24

回答

2

strip_tags它摆脱所有的HTML标签,但除了没有太多。

顺便说一下,这不是一件容易的事情,您必须实际上解析 HTML以找出哪些标签仍处于打开状态 - 这是最稳健的方法。另外,don't use a regular expression

+0

是的,我认为是这样。我需要html标签,因此删除它们不是答案。我希望有一个功能可以做到这一点,有点WP和许多博客软件。 – user962449 2012-02-08 22:33:56

2

正确的解决方案是不将显示信息存储在数据库层中。

如果失败,您可以使用CSS overflow属性:打印整篇文章,然后让显示图层句柄调整大小以适合它。这可以通过将调整大小(显示问题,而不是内容问题)放入显示图层来缓解数据库中格式化信息的问题。

做不到这一点,你可以解析HTML和“四舍五入”或“四舍五入”到最近的标签边界,然后将要完成你在块标签关闭字符。

另一种选择是iframe的内容。

0

我知道这不是以编程方式执行此操作的最佳方式,但是您是否已考虑手动指定剪切的位置?添加类似的东西并手动切割它可以让您控制切割发生的位置,而不管之前的字符数量。例如,你总是可以把它放在第一段以下。

不可否认,你失去了让它自动发生的能力,但是我会提醒你,以免对你造成太大影响。