Esta web usa cookies propias y de terceros para mejorar tu experiencia de navegación y realizar tareas de análisis. Al continuar con tu navegación entendemos que das tu consentimiento a nuestra política de cookies.

MY NEW STATIC BLOG. WHY? BECAUSE FUCK YOU, THAT'S WHY!




Espero que PHP 6 no dé tantos problemas con UTF8. Con eso me conformo, porque PHP 5.X es desastroso en ese área.

Dado que FeedStorm puede importar noticias de cualquier fuente y en cualquier idioma, lo más sensato fue convertirlo todo automáticamente a UTF8, y ahí se multiplicaron los problemas. Para trabajar con UTF8 no te puedes fiar de funciones como strlen() o substr(), eso sin contar con que iconv() falla más que una escopeta de feria a la hora de convertir.

Otro problema añadido es que tengo que mostrar todo el texto en viñetas de no más de 200 píxeles, y eso obliga a acortar el texto y, en ocasiones, a cortar palabras para que quepa. Para acortar el texto puedes usar mb_substr(), pero usando esta función te puedes encontrar con palabras cortadas e incluso con caracteres escapados cortados. Por ejemplo > te lo puede cortar y dejarte un caracter raro que queda muy feo en una noticia.

Otro problema es la función wordwrap(), que corta el texto por dónde le sale de los cojones, en lugar de contar la longitud de cada palabra y ya decidir si corta o no. Pero es que para colmo puedes encontrarte que también corta caracteres escapados ... Así que me tuve que desarrollar dos funciones, poco eficientes, pero que funcionan.

La primera es true_word_break(), que de verdad cuenta la longitud de cada palabra y corta si excede de cierta longitud. Y además es compatible con UTF8:

La segunda es true_text_break(), que acorta el texto hasta la longitud determinada, pero sin dejarlo a mitad de palabra. Además aplica la función true_word_break() previamente para cortar palabras largas:

Otra función poco eficiente que he tenido que desarrollar es para escapar el html y corregir los & no escapados, y que provocan errores en el RSS. Esta función busca & no escapados, y que no se correspondan con otros caracteres escapados, y los transforma en &. Es decir, si encuentra & lo transforma en &, pero si encuentra < o & no hace nada.

Y lo mejor de estas funciones es que puedes aplicarlas una y otra vez sobre los datos sin que se guarreen.

Tenéis el código fuente aquí o aquí.

PD: estas funciones has sido probadas en el mayor banco de pruebas de que dispongo: locierto.es y sus más de 55.000 noticias indexadas.
comments powered by Disqus

Powered by PussyPress.