Pergunta

Como você programmacially abreviar XHTML para um número arbitrário de palavras sem deixar aberto ou danificado tags?

i.e.

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

Abreviadamente: 25 palavras seria:

<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>
Foi útil?

Solução

Recurse através da árvore DOM, mantendo uma contagem de palavra variável atualizado.Quando a palavra de contagem exceder o máximo de contagem de palavras, inserir "..." e remover todos os seguintes irmãos do nó atual, então, como você voltar para cima, através da recursividade, remova as seguintes irmãos de cada um de seus antepassados.

Outras dicas

Você precisa pensar em XHTML, css, como uma hierarquia de elementos e tratá-lo como tal.Este é, basicamente, a forma como o XML é destinado a ser tratada.Em seguida, basta ir até a hierarquia recursivamente, acrescentando-se o número de palavras que você vá.Quando você atingir o limite de jogar tudo fora.

Eu trabalho principalmente em PHP, e gostaria de usar a classe DOMDocument em PHP para me ajudar a fazer isso, você precisa encontrar algo parecido em seu idioma escolhido.

Para tornar as coisas mais claras, aqui é a hierarquia, para o seu exemplo:

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

Você atingiu o 25 de limite de palavras dentro do elemento span, assim que você remover todas as restantes texto dentro de um intervalo e adicione as reticências.Todos os outros elementos filho (texto e tags) podem ser descartadas, e todos os seguintes elementos podem ser descartados.

Isso sempre deve deixar você com marcação válida tanto quanto eu posso ver, porque você está tratando-a como uma hierarquia, e não apenas texto simples, todas as "tags" de encerramento que são necessários ainda vai estar lá.

É claro que se o XHTML que você está lidando é inválido para começar, não espere que o resultado seja válido.

Triste para os pobres exemplo de hierarquia, não podia trabalhar fora como aninhar listas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top