2011-01-12 37 views
5

thể trùng lặp:
php: sort and count instances of words in a given stringĐếm tần số từ trong một văn bản?

tôi tìm cách để viết một hàm php mà phải mất một chuỗi như là đầu vào, chia tách nó thành các từ và sau đó trả về một mảng các từ được sắp xếp theo tần số xuất hiện của mỗi từ.

Cách hiệu quả nhất về mặt thuật toán để hoàn thành điều này là gì?

+0

tôi hy vọng nó sẽ phụ thuộc vào kích thước của văn bản. Trong mọi trường hợp, có rất nhiều trình phân tích cú pháp như vậy, và cách lập trình hiệu quả nhất là sử dụng lại thay vì viết của riêng bạn. Chỉ cần google 'truy cập từ tần số php' – dnagirl

+0

Nó phụ thuộc vào những gì bạn có nghĩa là 'từ' quá, mặc dù. Chữ "của" có được tính là một từ khi nó là dấu hiệu sở hữu không? Điều gì về khi nó là một co cho "là"? Làm thế nào về các cơn co thắt khác? Nếu bạn chỉ quan tâm đến việc chia nhỏ bởi khoảng trống hoặc dấu gạch ngang (như T9 trên điện thoại của bạn) thì có lẽ bạn nên sử dụng những thứ tích hợp sẵn như Gordon được đề xuất bên dưới. – Crisfole

+0

2 câu hỏi trước đây từ StackOverflow trên cùng một chủ đề. Nên hữu ích. [Đếm tần suất từ ​​xảy ra trong văn bản trong PHP] [1] [php: sắp xếp và đếm các trường hợp của các từ trong một chuỗi cho trước] [2] [ 1]: http://stackoverflow.com/questions/2123236/count-how-often-the-word-occurs-in-the-text-in-php [2]: http://stackoverflow.com/ câu hỏi/2984786/php-sắp xếp-và-đếm-trường hợp-of-từ-trong-một-cho-chuỗi – Paul

Trả lời

22

Đặt cược của bạn tốt nhất là những:

Ví dụ

$words = 'A string with certain words occuring more often than other words.'; 
print_r(array_count_values(str_word_count($words, 1))); 

Output

Array 
(
    [A] => 1 
    [string] => 1 
    [with] => 1 
    [certain] => 1 
    [words] => 2 
    [occuring] => 1 
    [more] => 1 
    [often] => 1 
    [than] => 1 
    [other] => 1 
) 

đánh dấu CW vì câu hỏi là bản sao của ít nhất hai câu hỏi khác có chứa câu trả lời tương tự

Các vấn đề liên quan