1

我有一个远程页面的收据:

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

有一个单词数组:

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

如何计算数组中与页面上的文本匹配的单词数?开始往那个方向挖

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

但肯定不是我挖掘的方向,因为计数始终为零。并且通过 preg_match_all 去寻找一个词,而不是整个数组。: (

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) 不匹配word作为单词,而不是swords.

于 2012-11-17T15:53:17.090 回答