我们有自己的博客系统,后期数据存储了一个原始的html,所以当它从数据库中调用时我们可以回显它并且它完全格式化,在我们的情况下不需要BB代码。我们现在的问题是我们的博文有时太长,需要修剪。
问题是我们的数据包含html,主要是<font>
,<span>
,<p>
,<b>
和其他样式标记。我做了一个修剪字符的PHP函数,但它没有考虑到html标签。如果修剪功能修剪了博客,它不应该修剪标签,因为它会混淆整个页面。该函数需要能够关闭html标签,如果它们被修剪。有没有可以做到这一点的功能?或者我可以从中开始建立的功能?
答案 0 :(得分:2)
有strip_tags
除去所有HTML标签,但除此之外没有太多。
顺便说一句,这不是一件容易的事情,你必须实际解析 HTML以找出哪些标签是开放的 - 这是最强大的方法。另外,don't use a regular expression。
答案 1 :(得分:2)
正确的解决方案是不在您的数据库层中存储显示信息。
如果不这样做,你可以使用CSS overflow
属性:打印整个帖子,然后让显示层处理大小以适应它。通过将调整大小(显示问题,而不是内容问题)放入显示层,可以缓解数据库中格式化信息的问题。
失败,您可以解析HTML并“向上”或“向下舍入”到最近的标记边界,然后插入完成您所在块所需的标记关闭字符。
另一种选择是iframe
内容。
答案 2 :(得分:2)
答案 3 :(得分:0)
我知道这不是以编程方式执行此操作的最佳方式,但您是否考虑过手动指定剪切应该在哪里?添加类似的东西并手动切割它可以让你控制切割发生的位置,无论它前面的字符数是多少。例如,您可以始终将其放在第一段之下。
不可否认,你失去了让它自动发生的能力,但是如果对你来说无关紧要的话,我会提起它。