以此字符串为例:“明天将在伦敦见到你,明天将在肯特见到你”。
如何将此转换为包含关键字作为键的关联数组,同时最好忽略常用词,如下所示:
数组([明天] => 2 [伦敦] => 1 [肯特] => 1)
非常感谢任何帮助。
答案 0 :(得分:7)
我会说你可以:
explode
preg_split
array_filte
r只保留您想要的线条(即单词)
array_count_values
编辑:而且,只是为了好玩,这是一个简单的例子:
首先,字符串会爆炸成单词:
$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
现在,由你来建立起来;-)
主要是,你必须努力:
玩得开心!
答案 1 :(得分:1)
你可以有一个常用单词表,然后一次一个字地检查你的字符串,检查它是否存在于表中,如果没有,则将其添加到关联数组中,如果已经存在,则为+1存在。
答案 2 :(得分:0)
使用不包含的单词黑名单
$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 );