1

リモートページの領収書があります:

$page = file_get_contents ('http://sayt.ru/');

単語の配列があります:

$word = array ("word", "second");

ページ上のテキストと一致する配列内の単語数をカウントする方法は? 方向に掘り始めました

$matches = array ();
$count_words = preg_match_all ('/'. $word. '/ i',$page, $matches);

しかし、count は常に 0 であるため、掘り下げる方向ではありません。そして preg_match_all を介して、配列全体ではなく、1 つの単語を求めました。: (

4

1 に答える 1

3

配列内の各単語をチェックするか、次のように正規表現を使用する必要があります。

$serachWords = array_map(function($w){ return preg_quote($w,'/'); }, $word);
$search = implode('|', $searchWords);
$count_words = preg_match_all('/\b(?:'.$serach.')\b/i', $page, $matches);

より良い結果を得るためにいくつかの変更を追加しました: すべての単語をエスケープして、表現を壊したり、単語の境界を追加したりしないようにします ( ) の一部ではなく、単語として\b一致しません。wordswords

于 2012-11-17T15:53:17.090 に答える