возьмите эту строку в качестве примера: "будет видеть Вас в Лондоне завтра и Кенте послезавтра".
Как был бы я преобразовывать это в ассоциативный массив, который содержит ключевые слова как ключи, предпочтительно пропуская общие слова, как это:
Массив ([завтра] => 2 [Лондона] => 1 [Кент] => 1)
Любая справка значительно ценится.
с использованием черного списка слов, которые нельзя включать
$str = 'will see you in London tomorrow and Kent the day after tomorrow';
$skip_words = array( 'in', 'the', 'will', 'see', 'and', 'day', 'you', 'after' );
// get words in sentence that aren't to be skipped and count their values
$words = array_count_values( array_diff( explode( ' ', $str ), $skip_words ) );
print_r( $words );
Вы можете иметь таблицу общих слов, затем пройти через вашу строку по одному слову за раз, проверяя, существует ли оно в таблице, если нет, то добавить его в ваш ассоциативный массив, или +1 к нему, если оно уже существует.
Я бы сказал, вы могли бы:
explode
preg_split
array_filte
r, чтобы сохранить только те строки (то есть слова), которые вы хотите { {1}}
array_count_values
в результирующем списке слов {{ 1}}
EDIT: и, просто для удовольствия, вот быстрый пример:
Первый из все, строка, которая разбивается на слова:
$str = "will see you in London tomorrow and Kent the day after tomorrow";
$words = preg_split('/\s+/', $str, -1, PREG_SPLIT_NO_EMPTY);
var_dump($words);
Что дает вам:
array
0 => string 'will' (length=4)
1 => string 'see' (length=3)
2 => string 'you' (length=3)
3 => string 'in' (length=2)
4 => string 'London' (length=6)
5 => string 'tomorrow' (length=8)
6 => string 'and' (length=3)
7 => string 'Kent' (length=4)
8 => string 'the' (length=3)
9 => string 'day' (length=3)
10 => string 'after' (length=5)
11 => string 'tomorrow' (length=8)
Затем фильтрация:
function filter_words($word) {
// a pretty simple filter ^^
if (strlen($word) >= 5) {
return true;
} else {
return false;
}
}
$words_filtered = array_filter($words, 'filter_words');
var_dump($words_filtered);
Что дает:
array
4 => string 'London' (length=6)
5 => string 'tomorrow' (length=8)
10 => string 'after' (length=5)
11 => string 'tomorrow' (length=8)
И, наконец, подсчет:
$counts = array_count_values($words_filtered);
var_dump($counts);
И окончательный результат:
array
'London' => int 1
'tomorrow' => int 2
'after' => int 1
Теперь вы можете создавать здесь; -)
В основном вам придется поработать:
Удачи!