douhan5547 2012-07-20 16:21
浏览 47
已采纳

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

Ok, so as I'm getting my hands dirty with PHP I've started playing around with arrays, strings and the like.

Now I know that arrays have a neat feature called "array_count_values" which can help to determine what the most repeated entry is. I wasn't able to find a string equivalent for this- will I need to convert the string to an array?

Basically, I want my code to determine what the most common (repeated) word is over a certain length in a given string.

Sans the character length qualification, this code can find the answer to the question of what is the most repeated word in an array:

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

So what would make this doable with a string? And a character amount filter?

  • 写回答

3条回答 默认 最新

  • dongpinyao2203 2012-07-20 16:28
    关注

    With a string, you can just explode() or preg_split() on space to form an array. Using preg_split() is favorable as it will eliminate duplicate and extraneous whitespace that explode() will not.

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

    Then, once you have an array, use array_filter() to remove those that don't meet the character requirements:

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

    Once you have the $filtered array, just use that in array_count_values().

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

    Here is a demo, which prints:

    long -> 3 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行