提问人:Nick Higgs 提问时间:8/29/2008 最后编辑:eLRuLLNick Higgs 更新时间:12/17/2017 访问量:170
您如何将 XHTML 缩写为任意数量的单词?
How would you abbriviate XHTML to an arbitrary number of words?
问:
如何以编程方式缩写为任意数量的单词,而不会留下未关闭或损坏的标签?XHTML
即
<p>
Proin tristique dapibus neque. Nam eget purus sit amet leo
tincidunt accumsan.
</p>
<p>
Proin semper, orci at mattis blandit, augue justo blandit nulla.
<span>Quisque ante congue justo</span>, ultrices aliquet, mattis eget,
hendrerit, <em>justo</em>.
</p>
缩写为 25 个字是:
<p>
Proin tristique dapibus neque. Nam eget purus sit amet leo
tincidunt accumsan.
</p>
<p>
Proin semper, orci at mattis blandit, augue justo blandit nulla.
<span>Quisque ante congue...</span>
</p>
答:
1赞
levand
8/29/2008
#1
递归 DOM 树,使字数统计变量保持最新。当字数超过最大字数时,请插入“...”并删除当前节点的所有后续同级,然后,当您返回递归时,删除其每个祖先的所有以下同级。
1赞
Robin Barnes
8/29/2008
#2
您需要将 XHTML 视为元素的层次结构,并将其视为元素层次结构。这基本上就是处理 XML 的方式。然后,只需递归地遍历层次结构,将单词数相加即可。当你达到极限时,扔掉其他一切。
我主要在 PHP 中工作,我会使用 PHP 中的 DOMDocument 类来帮助我做到这一点,您需要在您选择的语言中找到类似的东西。
为了更清楚地说明问题,下面是示例的层次结构:
- p
- Proin tristique dapibus neque. Nam eget purus sit amet leo
tincidunt accumsan.
- p
- Proin semper, orci at mattis blandit, augue justo blandit nulla.
- span
- Quisque ante congue justo
- , ultrices aliquet, mattis eget, hendrerit,
- em
- justo
- .
您达到了 span 元素内的 25 字限制,因此您删除了 span 中所有剩余的文本并添加省略号。可以丢弃所有其他子元素(文本和标记),并且可以丢弃所有后续元素。
据我所知,这应该始终为您提供有效的标记,因为您将其视为层次结构而不仅仅是纯文本,所需的所有结束标记仍将存在。
当然,如果您正在处理的 XHTML 一开始就无效,请不要期望输出是有效的。
对不起,层次结构示例不佳,无法弄清楚如何嵌套列表。
评论