我们如何将XHTML修饰为任意数量的单词?

时间:2020-03-05 18:44:58  来源:igfitidea点击:

我们将如何在编程上将XHTML缩写为任意数量的单词而又不留下未封闭或者损坏的标签?

IE。

<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>

解决方案

回答

遍历DOM树,使单词计数变量保持最新。当字数超过最大字数时,请插入" ..."并删除当前节点的所有后续同级,然后在进行递归时,删除其祖先的所有以下同级。

回答

我们需要将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开头是无效的,请不要期望输出有效。

很抱歉,糟糕的层次结构示例无法解决如何嵌套列表的问题。