我们有自己的博客系统,帖子数据是存储一个原始的html,所以当它从数据库调用时,我们只需回显它,它是完全格式化的,在我们的情况下不需要bb码。我们现在的问题是,我们的博客帖子有时太长了,需要修剪。
问题是我们的数据包含html,主要是<font>、<span>、<p>、<b>和其他样式标记。我做了一个php函数来修剪字符,但是它没有考虑html标签。如果trim函数修剪博客,它不应该修剪标签,因为它会弄乱整个页面。该函数需要能够关闭html标记,如果它们被修剪。有没有一个函数可以做到这一点呢?或者是一个我可以从它开始和构建的函数?
发布于 2012-02-09 06:35:20
这里有一个很好的truncating text while preserving HTML tags示例。
发布于 2012-02-09 06:31:52
有一个strip_tags可以去掉所有的超文本标记语言标签,但除此之外就没什么了。
顺便说一句,这并不是一件容易的事情,您必须实际解析HTML来找出哪些标记是打开的--这是最健壮的方法。还有,don't use a regular expression。
发布于 2012-02-09 06:33:30
正确的解决方案是不将显示信息存储在数据库层中。
如果做不到这一点,您可以使用CSS overflow属性:打印整个帖子,然后让显示层处理它的大小以适合它。这通过将调整大小(显示问题,而不是内容问题)放到显示层中,从而减轻了在数据库中设置格式信息的问题。
如果没有该,您可以解析并“向上舍入”或“向下舍入”到最近的标记边界,然后插入完成所在块所需的标记关闭字符。
另一种选择是iframe内容。
https://stackoverflow.com/questions/9202502
复制相似问题