2

別の文の文の出現回数を見つける方法を探しています

たとえば(私は持っています):

Do you have a different language or operating system? JavaScript is currently disabled in your browser and is required to

そして私は探しています:

a

これにより、次の結果が表示されます。

結果 = 1

a を char としてではなく単語としてカウントすると、結果として 1 が得られるためです。

「別言語またはオペレーティング システムを使用していますか? JavaScript は現在、お使いのブラウザーで無効になっており、必要です」Din.

4

3 に答える 3

1

単語「a」が文字列で使用されている回数をすばやく/簡単にカウントする限り:

$sent = "Do you have a different language or operating system? JavaScript is currently disabled in your browser and is required to";

if( preg_match( '/ a /', $sent, $matches ) ) { # a space before and after makes it a word not a letter.
    echo count( $matches );            
}

しかし、それでもすべての場合に確実にいくつの文があるかはわかりません。これを行うには、かなり複雑な正規表現が必要になります。

--> 編集:

文頭やその他の場所で単語「a」を取得するには、次のようにします。

$sent = "A different language or operating system? JavaScript is currently disabled in your browser and is required to eat a walrus";

$patterns = array( '/ a /', '/A /' );
$ctr = 0;

foreach( $patterns as $p ) {

    if( preg_match( $p, $sent, $matches ) ) {
        $ctr += count( $matches );             
    }

}

echo $ctr;  
于 2013-03-03T21:38:27.337 に答える
1

確かに使用しますsubstr_count

単語のみを一致させるには: を使用する前に単語の前後にスペースを追加し、 を使用substr_countして文字列の先頭または末尾にある単語を明示的にチェックしsubstrます。

于 2013-03-03T21:34:39.517 に答える
0

最も効率的なソリューションではありませんが、必要なものが得られるようです。

$search = 'a';
$str = "Do you have a different language or operating system? JavaScript is currently disabled in your browser and is required to";
$count = array_sum(array_map(function($val) use ($search) {if ($val == $search) { return 1; } else { return 0; }}, str_word_count($str, 1)));
于 2013-03-03T21:41:40.177 に答える