PHP - 在字符串中查找特定字符长度的最常见字词。

时间:2012-07-20 16:21:39

标签: php count

好的,所以当我弄脏PHP时,我开始玩数组,字符串等。

现在我知道数组有一个称为“array_count_values”的简洁功能,它可以帮助确定最重复的条目是什么。我无法找到相应的字符串 - 我需要将字符串转换为数组吗?

基本上,我希望我的代码能够确定给定字符串中最常见(重复)单词超过一定长度的内容。

没有字符长度限定,这段代码可以找到数组中重复次数最多的单词问题的答案:

<?php


$param[0]="Ted";
$param[1]="Mark";
$param[2]="Mark";
$param[3]="Ross"; 
$param[3]="Clarence"; 

function array_most_common($arr) 
{ 
  $counted = array_count_values($arr); 
  arsort($counted); 
  return(key($counted));     
}

$mostCommon = array_most_common($param);
echo $mostCommon;
?>

那么用字符串做什么呢?还有一个字符量过滤器?

3 个答案:

答案 0 :(得分:2)

使用字符串,您可以在空格上explode()preg_split()形成一个数组。使用preg_split()是有利的,因为它会消除explode()不会出现的重复和无关的空白。

$array = preg_split( '/\s+/', "This is a pretty long long long string", -1, PREG_SPLIT_NO_EMPTY);

然后,一旦有了数组,使用array_filter()删除那些不符合字符要求的数组:

$threshold = 3;
$filtered = array_filter( $array, function( $el) use( $threshold) {
    return strlen( $el) > $threshold;
});

获得$filtered数组后,只需在array_count_values()中使用该数组。

$counts = array_count_values( $filtered);
arsort( $counts); 
echo key( $counts) . ' -> ' . current( $counts); 

Here是一个演示版,可以打印:

long -> 3 

答案 1 :(得分:1)

要回答你的问题,就我所知,没有确定字符串中最常用字的功能。但是,您可以explode()按空格填充字符串,而array_count_values()代替结果数组。我不太确定“字符数量过滤器”是什么意思,或者你计划实现它的目的。

答案 2 :(得分:1)

$str = strtolower("The quick brown fox jumps over the lazy dog");
$words = explode(" ", $str);
$words = array_filter($words, function($word) {
    return strlen($word) > 2;
});
$word_counts = array_count_values($words);
arsort($word_counts);
$most_common_word = key($word_counts); // Returns "the"