No estoy seguro de que lo mejor sea hacerlo en el lado del cliente. Consideraría enviar los párrafos nuevamente al servidor para hacer el trabajo. Pero el trabajo debe ser el mismo de cualquier manera.
Primero tome todo el contenido de un párrafo, asegúrese de obtenerlo todo lo que podría estar en unos pocos nodos en el DOM. (Read This) Luego necesitarás hacer un analizador sintáctico que busque tus caracteres divididos mientras aún los ignoras mientras están en entidades HTML.
Como ejemplo, el. en un atributo href se debe ignorar y no dividir. Mientras realiza el análisis, puede mantener un recuento de palabras y romper el trabajo en los espacios. Haga que cada oración sea un objeto que contenga la oración completa y el recuento de palabras. Entonces puede insertar esos objetos en una matriz que represente el párrafo. Una vez hecho esto, puede iterar a través de la matriz y ajustar cualquier oración en un lapso para resaltar con CSS si el conteo de palabras alcanza su umbral.
El problema principal son las etiquetas que pueden ser partes de dos oraciones, como la siguiente.
I'm typing <b> in bold. NOW!</b>
lo que he hablado de hacer no trata de eso, sino que podría hacer que el programa de análisis más complejo después para apoyar eso.
Así que una visión general rápida de mi análisis laberíntico a través de todos los personajes con una máquina de estado que se ocupa de contar palabras y dividir en el lugar correcto. En split, agregue los datos que ha recopilado a una matriz. Cuando termine, itere a través de la matriz generando las frases recién ajustadas.
Supongo que aquí tienes tu jQuery para hacer el resaltado básico? –
Si estos párrafos tienen enlaces, entonces no producirán lo que espera. Y ahora hay un camino en el futuro para lidiar con el código html que abarca oraciones. Pero si los párrafos son simples y el texto es perfecto. –