2008-08-29 17 views
1

Wie würden Sie XHTML programmatisch auf eine beliebige Anzahl von Wörtern abkürzen, ohne unverschlossene oder beschädigte Tags zu hinterlassen?Wie würden Sie XHTML auf eine beliebige Anzahl von Wörtern abkürzen?

d.h.

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

abgekürzt 25 Wörtern wäre:

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

Antwort

1

Recurse durch den DOM-Baum, ein Wort-Zählvariable auf dem aktuellen Stand zu halten. Wenn die Wortzählung Ihre maximale Wortzahl überschreitet, fügen Sie "..." ein und entfernen Sie alle folgenden Geschwister des aktuellen Knotens. Entfernen Sie anschließend alle nachfolgenden Geschwister von jedem der Vorfahren, während Sie die Rekursion fortsetzen.

1

Sie müssen sich das XHTML als Hierarchie von Elementen vorstellen und es so behandeln. Dies ist im Grunde die Art, wie XML behandelt werden soll. Dann gehe einfach rekursiv durch die Hierarchie und füge die Anzahl der Wörter zusammen. Wenn Sie Ihr Limit erreichen, werfen Sie alles andere weg.

Ich arbeite hauptsächlich in PHP, und ich würde die DOMDocument-Klasse in PHP verwenden, um mir dabei zu helfen, Sie müssen etwas in der von Ihnen gewählten Sprache finden.

Um die Dinge klarer, hier die Hierarchie für Ihre Probe ist:

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

Sie trifft die 25 Wortgrenze innerhalb des span-Elements, so dass Sie alle restlichen Texte innerhalb der Spanne entfernen und die Auslassungszeichen hinzufügen. Alle anderen untergeordneten Elemente (Text und Tags) können verworfen werden und alle nachfolgenden Elemente können verworfen werden.

Dies sollte immer Sie mit gültigen Markup so weit wie ich sehen kann, weil Sie es als eine Hierarchie und nicht nur Text behandeln, alle abschließenden Tags, die erforderlich sind, wird noch da sein.

Natürlich, wenn das XHTML, mit dem Sie es zu tun haben, zu Beginn ungültig ist, erwarten Sie nicht, dass die Ausgabe gültig ist.

Sorry für die schlechte Hierarchie Beispiel, konnte nicht herausfinden, wie Sie Listen verschachteln.