1

好的,所以当我开始使用 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;
?>

那么用字符串做什么可以做到这一点呢?还有字符量过滤器?

4

3 回答 3

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); 

是一个演示,它打印:

long -> 3 
于 2012-07-20T16:28:00.070 回答
1

要回答您的问题,据我所知,没有用于确定字符串中最常见单词的功能。但是,您可以explode()将字符串按空格,并将array_count_values()结果数组改为。我不太确定您所说的“字符量过滤器”是什么意思,或者您打算在哪里实现它。

于 2012-07-20T16:27:41.577 回答
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"
于 2012-07-20T16:28:53.840 回答