Pregunta

¿Cómo le programmacially abreviar XHTML para un número arbitrario de las palabras sin dejar abiertos o dañados etiquetas?

es decir,

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

Abreviado a 25 palabras sería:

<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>
¿Fue útil?

Solución

Recurse a través del árbol DOM, manteniendo una palabra variable de recuento hasta la fecha.Cuando el recuento de palabras supera el máximo número de palabras, insertar "..." y eliminar todos los siguientes hermanos del nodo actual, entonces, como ir de regreso a través de la recursividad, quitar todos los siguientes hermanos de cada una de sus antepasados.

Otros consejos

Usted necesita pensar de la XHTML como una jerarquía de elementos y hay que tratarlo como tal.Esta es básicamente la manera de XML está destinado a ser tratada.Luego ir a través de la jerarquía, de forma recursiva, agregando el número de palabras a medida que avanza.Cuando alcanza su límite de tirar todo lo demás fuera.

Yo trabajo principalmente en PHP, y me gustaría utilizar la clase DOMDocument en PHP para que me ayude a hacer esto, usted necesita encontrar algo así en el idioma elegido.

Para hacer las cosas más claras, aquí se presenta la jerarquía de la muestra:

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

Usted golpea el 25 de límite de palabras en el interior del elemento span, para quitar todo resto del texto dentro de la duración y agregar el botón de puntos suspensivos.Todos los demás elementos secundarios (tanto de texto y etiquetas) puede ser descartado, y todos los elementos pueden ser descartados.

Esto siempre debe dejar con código válido como lo que puedo ver, porque usted está tratando como una jerarquía y no sólo texto plano, todas las etiquetas de cierre que son necesarios todavía estará allí.

Por supuesto, si el XHTML que se trata es válido para empezar, no es de esperar que la salida sea válida.

Lo siento por los pobres ejemplo de jerarquía, no podía trabajar cómo anidar listas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top