Frage

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

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>

Auf 25 Wörter abgekürzt 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>
War es hilfreich?

Lösung

Rekursieren Sie durch den DOM-Baum und halten Sie eine Wortanzahlvariable auf dem neuesten Stand.Wenn die Wortanzahl Ihre maximale Wortanzahl überschreitet, fügen Sie „…“ ein und entfernen Sie alle folgenden Geschwister des aktuellen Knotens. Entfernen Sie dann, wenn Sie die Rekursion noch einmal nach oben durchgehen, alle folgenden Geschwister jedes seiner Vorfahren.

Andere Tipps

Sie müssen sich XHTML als eine Hierarchie von Elementen vorstellen und es als solche behandeln.Dies ist im Grunde die Art und Weise, wie XML behandelt werden soll.Gehen Sie dann einfach rekursiv durch die Hierarchie und addieren Sie dabei die Anzahl der Wörter.Wenn Sie Ihr Limit erreichen, werfen Sie alles andere weg.

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

Zur Verdeutlichung finden Sie hier die Hierarchie für Ihr Beispiel:

- 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 haben die Grenze von 25 Wörtern innerhalb des Span-Elements erreicht, also entfernen Sie den gesamten verbleibenden Text innerhalb des Spans und fügen die Auslassungspunkte hinzu.Alle anderen untergeordneten Elemente (sowohl Text als auch Tags) können verworfen werden, und alle nachfolgenden Elemente können verworfen werden.

Soweit ich sehen kann, sollten Sie dadurch immer ein gültiges Markup erhalten, da Sie es als Hierarchie und nicht nur als einfachen Text behandeln. Alle erforderlichen schließenden Tags sind weiterhin vorhanden.

Wenn das XHTML, mit dem Sie es zu tun haben, von vornherein ungültig ist, können Sie natürlich nicht davon ausgehen, dass die Ausgabe gültig ist.

Entschuldigung für das Beispiel mit der schlechten Hierarchie, ich konnte nicht herausfinden, wie Listen verschachtelt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top