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 に答える