Theo nhiều nghiên cứu và thống kê, việc đo lường tốc độ và khả năng hiểu bài phụ thuộc vào nội dung văn bản và một bộ câu hỏi. Bảng sau đây không thuộc về một bài kiểm tra cụ thể cho chúng ta một ý tưởng chung về hiệu quả đọc:
MÀN HÌNH | SÁCH GIẤY | BAO QUÁT | HỒ SƠ NGƯỜI ĐỌC |
---|---|---|---|
100 wpm | 110 wpm | 50% | Không đủ |
200 wpm | 240 wpm | 60% | Người đọc trung bình |
300 wpm | 400 wpm | 80% | Người đọc giỏi |
700 wpm | 1000 wpm | 85% | Người đọc xuất sắc, thành công |
*wpm: words per minute
Theo bảng này, người đọc trung bình đọc khoảng 200 từ mỗi phút. Sử dụng con số này, chúng ta có thể dễ dàng xác định thời gian mà một người sẽ đọc một bài báo nếu chúng ta có số từ trong văn bản đó.
Trong bài viết này, tôi sẽ giải thích cho bạn cách dễ dàng xác định thời gian đọc ước tính của bất kỳ văn bản nào (trong HTML, đánh dấu hoặc văn bản thuần túy) bằng cách sử dụng một hàm PHP đơn giản. Tất nhiên, bạn cần biết rằng khá khó để tạo ra thời gian đọc ước tính chính xác 100% vì nó sẽ luôn thay đổi, tuy nhiên, về mặt toán học, bạn có thể cung cấp thống kê này cho người dùng của mình và trang web của bạn sẽ trông đẹp hơn.
Triển khai viết code
Logic triển khai diễn ra như thế này. Chúng tôi sẽ cần nội dung mà chúng tôi sẽ sử dụng để ước tính thời gian đọc, lý tưởng nhất là văn bản này ở dạng văn bản thuần túy, vì vậy trước khi sử dụng logic để xác định thời gian đọc nó, chúng tôi cần xóa bất kỳ nội dung nào không được tính là văn bản thuần túy. Ví dụ: nếu bạn cung cấp nội dung của mình dưới dạng HTML, có nhiều thứ trong nội dung sẽ tạo ra kết quả không mong muốn, giống như nội dung sau, bởi vì nếu chúng ta sử dụng hàm str_word_count
của PHP để đếm các từ của chuỗi sau, nó sẽ tính 8 từ (nếu bạn phân tích nội dung thì chúng thực sự là 8 từ được viết) nhưng chỉ có một từ duy nhất trong văn bản là "Chào mừng":
Ví dụ
<h1> <span class="highlight">Wel</span>come </h1>
Vì vậy, để tránh sự thiếu chính xác này, chúng ta cần xóa các thẻ HTML bằng cách sử dụng hàm strip_tags
của PHP, hàm này sẽ tạo ra văn bản thuần túy từ HTML của chúng tôi:
Khi bạn có số lượng từ, bạn có thể chỉ cần tính số phút cần thiết để đọc nội dung đơn giản bằng cách chia số từ cho tốc độ từ mỗi phút mà một người có thể đọc (200 wpm là mức trung bình tốt, nhưng bạn có thể thay đổi nó). Điều này sẽ cung cấp cho bạn một ước tính tốt về việc một người dùng thông thường sẽ mất bao nhiêu phút để đọc nội dung của bạn. Nếu bạn cũng muốn trích xuất giây, bạn chỉ cần lấy phần còn lại của phép chia (giữa tổng số từ và số từ trên phút) giữa tỷ lệ số từ trên phút chia cho 60 giây.
Đã nói rằng, bạn có thể triển khai hàm như thế này, hàm này nhận làm đối số đầu tiên là văn bản chưa được xử lý (HTML, Markdown, v.v.) và là đối số thứ hai là tốc độ từ trên phút mà bạn muốn sử dụng để tính thời gian đọc. Theo mặc định, nó sẽ sử dụng 200 từ mỗi phút, nhưng bạn có thể cung cấp tỷ lệ của riêng mình nếu bạn cần. Hàm sẽ trả về một mảng kết hợp với 2 khóa (phút và giây) chứa tương ứng lượng thời gian cần thiết để đọc văn bản:
Ví dụ
/**
* Function to calculate the estimated reading time of the given text.
*
* @param string $text The text to calculate the reading time for.
* @param string $wpm The rate of words per minute to use.
* @return Array
*/
function estimateReadingTime($text, $wpm = 200) {
$totalWords = str_word_count(strip_tags($text));
$minutes = floor($totalWords / $wpm);
$seconds = floor($totalWords % $wpm / ($wpm / 60));
return array(
'minutes' => $minutes,
'seconds' => $seconds
);
}
Hàm này có thể được sử dụng dễ dàng như sau:
Ví dụ
// ["minutes" => 0, "seconds" => 4]
estimateReadingTime("<h1>Tiêu đề</h1><p>Đây là nội dung bài viết</p>");
Chúc bạn lập trình vui vẻ ❤️!