Question

Comment voulez-vous programmacially abréger XHTML pour un nombre arbitraire de mots sans laisser ouvert ou endommagé tags?

c'est à dire

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

Abrégé de 25 mots serait:

<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>
Était-ce utile?

La solution

Recurse par le biais de l'arborescence DOM, en gardant un nombre de mots variable jusqu'à ce jour.Lorsque le nombre de mots dépasse la valeur maximale de votre nombre de mots, insérer "..." et de supprimer tous les frères et sœurs de l'actuel nœud, puis, comme vous l'allez retour par le biais de la récursivité, supprimer tous les frères et sœurs de chacun de ses ancêtres.

Autres conseils

Vous avez besoin de penser le XHTML est une hiérarchie d'éléments et de les traiter en tant que tel.C'est fondamentalement la façon XML est destiné à être traités.Alors allez simplement à travers la hiérarchie de manière récursive, en ajoutant le nombre de mots que vous allez.Lorsque vous avez atteint votre limite de jeter tout le reste à l'écart.

Je travaille principalement en PHP, et je voudrais utiliser la classe DOMDocument en PHP pour m'aider à faire cela, vous avez besoin de trouver quelque chose comme ça dans la langue de votre choix.

Pour rendre les choses plus claires, voici la hiérarchie pour votre exemple:

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

Vous avez touché le 25 nombre limite de mots à l'intérieur de la durée de l'élément, de sorte que vous d'enlever tous les restes de texte à l'intérieur de la durée et ajouter les points de suspension.Tous les autres éléments d'enfant (à la fois du texte et des balises) peut être mis au rebut, et tous les éléments peuvent être ignorées.

Cela devrait toujours vous laisser avec un balisage valide aussi loin que je peux voir, parce que vous êtes la traiter comme une hiérarchie et pas juste du texte brut, toutes les balises de fermeture qui sont nécessaires sera toujours là.

Bien sûr, si le XHTML que vous traitez est pas valide pour commencer, ne pas s'attendre à la sortie pour être valide.

Désolé pour le mauvais exemple de hiérarchie, ne pouvait pas travailler sur la façon d'imbriquer des listes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top