Найти наиболее повторяющиеся подстроки в массиве

У меня есть массив:

$myArray=array(

'hello my name is richard',
'hello my name is paul',
'hello my name is simon',
'hello it doesn\'t matter what my name is'

);

Мне нужно найти подстроку (минимум 2 слова), которая повторяется чаще всего, возможно, в формате массива, поэтому мой возвращаемый массив мог бы выглядеть так:

$return=array(

array('hello my', 3),
array('hello my name', 3),
array('hello my name is', 3),
array('my name', 4),
array('my name is', 4),
array('name is', 4),

);

Итак, я могу видеть из этого массива массивов, как часто каждая строка повторялась среди всех строк в массиве.

Единственный способ сделать это так? ..

function repeatedSubStrings($array){

    foreach($array as $string){
        $phrases=//Split each string into maximum number of sub strings
        foreach($phrases as $phrase){
            //Then count the $phrases that are in the strings
        }
    }

}

Я пробовал решение, подобное описанному выше, но оно было слишком медленным, обрабатывая около 1000 строк в секунду, может ли кто-нибудь сделать это быстрее?

6
задан Justin T. 21 December 2011 в 12:28
поделиться