Estoy tratando de dividir una cadena HTML por un token para crear una vista previa del blog sin mostrar la publicación completa. Es un poco más difícil de lo que pensé. Aquí están los problemas:Rompecabezas: dividir una cadena HTML correctamente
- Un usuario será crear el código HTML través de un editor WYSIWYG (CKEditor). El marcado no está garantizado como bonito o consistente.
- El token,
read_more()
, puede se puede colocar en cualquier lugar de la cadena, incluido anidado dentro de una etiqueta de párrafo . - La primera cadena de división resultante debe ser un código HTML válido para todos los usos razonables del token .
ejemplos de posibles usos:
<p>Some text here. read_more()</p>
<p>Some text read more() here.</p>
<p>read_more()</p>
<p> read_more()</p>
read_more()
Hasta ahora, he tratado simplemente dividir la cadena en el token, pero deja HTML válido. Regex es quizás otra opción. ¿Qué estrategia usarías para resolver esto y hacerlo lo más a prueba de balas posible? Cualquier fragmento de código o sugerencia también sería apreciado (estoy usando PHP).
Regex es ** no ** una opción. Vea esta respuesta a otra pregunta de SO: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – You
¿Por qué no puede simplemente usar trim() en la cadena resultante, encuentre el elemento faltante abrir o cerrar y anexarlo apropiadamente, para que sea válido HTML? –
@You Si la expresión regular no es una opción, siéntase libre de sugerir otra opción que funcione para HTML potencialmente no válido (X). Por lo que sé, PHP no tiene un analizador XML que no arroje un error en XML no válido y que no tenga licencia de GPL. – VirtuosiMedia