最后更新时间为 2018年12月14日
标题中已经写明了是估算,阅读速度因人而异,这里也只能做大致的估算。
网上能搜到的方法是直接计算POST CONTENT长度,然后再除以平均阅读字数估算出阅读时间,总的来说,这样问题也不大,毕竟只是个估算。但个别时候可能会出现一些问题。
比如,当一篇文章全是图片的时候,比如有100张图片,全部看完要很久,但是使用传统方法来估算的话可能不到不到1分钟就看完了。因为传统方法只是把图片标签算做了文字,这样就非常不准确了。或者你为了更准确一些,去掉了HTML标签,那么100张图片的文章阅读时间就是0了。
所以,我的计算方法是,统计文章中的图片数量,估算图片的阅读时间。再去掉HTML标签,计算文字个数,估算文字阅读时间,二者相加来取得总的时间。这种计算方法看上去更加科学一些,但仍然是估算。
功能函数
function fa_get_postlength(){
global $post;
return strlen( strip_shortcodes(strip_tags(apply_filters('the_content', $post->post_content))) );
}
function fa_get_post_img_count(){
global $post;
preg_match_all('/<img.*?(?: |\\t|\\r|\\n)?src=[\'"]?(.+?)[\'"]?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim', $post->post_content, $strResult, PREG_PATTERN_ORDER);
return count($strResult[1]);
}
function fa_get_post_readtime(){
global $post;
return ceil(fa_get_postlength() / 800 + fa_get_post_img_count() * 8 / 60);
}
使用方法
在循环内使用<?php echo fa_get_post_readtime(); ?>调用,单位分钟。