Tiempo estimado de lectura en PHP

<?php

function get_estimated_reading_time( $content = '', $wpm = 250 ) {
	$content    = strip_tags( $content );
	$word_count = str_word_count( $content );

	return ceil( $word_count / $wpm );
}

Contexto

Comúnmente los blog requieren la funcionalidad de tiempo estimado de lectura en PHP, ya sea para ciertos CMS como WordPress o simples scripts.

Para obtener el tiempo estimado de lectura, es importante tener dos cosas:

  • $content. El contenido al cual tenemos que calcular el tiempo.
  • $wpm. La cantidad de palabras leídas por minuto.

No es muy común hablar sobre cantidad de palabras leídas por minuto en el mundo de la programación, pero es muy importante para obtener el tiempo estimado de lectura.

Para los adultos, existe un promedio total del tiempo estimado entre 200 y 250 palabras por minuto.

Por default, la cantidad de palabras mostradas por minuto ($wpm), de esta función, es de 250.

Demo

Mira cómo imprimo el tiempo estimado de lectura de múltiples párrafos en este PHPSandbox (Da click en el botón Run para ejecutar el script):

El resultado lo podrás imprimir directo en un template y/o usarlo dentro de una variable para imprimirla después.

Explicación

Internamente, la función utiliza las funciones:

La primera función, strip_tags(), elimina todas las etiquetas HTML y PHP de un string.

La segunda función, str_word_count(), devuelve la cantidad de palabras en un texto. El valor devuelto servirá para calcular el tiempo de lectura estimado ($word_count).

Al final, hay que dividir la cantidad de palabras ($word_count) y la cantidad de palabras leídas por minuto ($wpm).

El resultado de la división anterior la pasaremos dentro de la función ceil(). Así podemos enviar el resultado al usuario con un valor redondeado.

Si necesitas reducir o incrementar el valor de las palabras leídas por minuto, puedes especificarlo desde la llamada de la función en el segundo parámetro, por ejemplo:

get_estimated_reading_time( $content, 300 );

Tiempo estimado de lectura en WordPress

También puedes implementar el tiempo estimado de lectura en WordPress, tal como al principio de este y cualquier post de mi blog.

Podrías usar la misma función aquí presentada, pero en WordPress podemos agregar otra función para eliminar los shortcodes del contenido del post:

strip_shortcodes( $content );

La función completa para WordPress será:

<?php

function get_estimated_reading_time( $content = '', $wpm = 250 ) {
	$content    = strip_shortcodes( $content );
	$content    = strip_tags( $content );
	$word_count = str_word_count( $content );

	return ceil( $word_count / $wpm );
}

Como la función es para WordPress, no olvides agregar un prefijo a la función. Y si estás desarrollando un plugin para WordPress, aquí te dejo una lista sobre cómo desarrollarlos.

Roel Magdaleno
Escrito por Roel Magdaleno

Roel Magdaleno es un ingeniero informático especializado en desarrollo web desde hace más de 5 años. Desarrolla sitios web, aplicaciones web, plugins para WordPress y scripts con PHP y JavaScript. Además, comparte su conocimiento en su blog personal.

Deja un comentario