Domanda

Come si programmacially abbreviare XHTML per un numero arbitrario di parole, senza lasciare aperti o danneggiati tag?

cioè

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

Abbreviato in 25 parole sarebbe:

<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>
È stato utile?

Soluzione

Recurse attraverso l'albero del DOM, mantenendo una parola variabile di conteggio aggiornato.Quando il conteggio supera il massimo numero di parole, inserire "..." e rimuovere tutti i fratelli successivi del nodo corrente, quindi, come si va indietro attraverso la ricorsione, rimuovere tutti i seguenti fratelli di ciascuno dei suoi antenati.

Altri suggerimenti

È necessario pensare a XHTML come una gerarchia di elementi e di trattarlo come tale.Questo è fondamentalmente il modo in XML è pensato per essere trattati.Poi basta andare attraverso la gerarchia, in modo ricorsivo, aggiungere il numero di parole insieme, come si va.Quando raggiungi il tuo limite di buttare tutto il resto.

Io lavoro principalmente in PHP e vorrei utilizzare il DOMDocument classe in PHP per aiutarmi a fare questo, hai bisogno di trovare qualcosa di simile nella tua lingua.

Per rendere le cose più chiare, ecco la gerarchia per il tuo esempio:

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

Si colpisce il 25 limite di parole, all'interno dell'elemento span, quindi rimuovere tutti i residui di testo entro l'arco e aggiungere i puntini di sospensione.Tutti gli altri elementi secondari (testo e tag) può essere scartato, e tutti i successivi elementi può essere scartata.

Questo dovrebbe sempre lasciare con un markup valido, per quanto posso vedere, perché si sta trattando come una gerarchia e non solo testo normale, tutti i tag di chiusura che sono necessari ancora lì.

Naturalmente, se l'XHTML che si sta trattando non è valido per cominciare, non aspetta l'uscita per essere valido.

Mi spiace per il povero gerarchia esempio, non riuscivo a capire come nido liste.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top