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.

0

Escrito por Roel Magdaleno

Desarrollador Backend y Performance Engineer.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *