0

我正在使用 Twitter API 流式传输每分钟收集数千条推文。它们需要与关键字列表匹配(可以包含空格)。

这是我目前的方法:

$text = preg_replace( '/[^a-z0-9]+/i', ' ', strtolower( $data['text'] ) );
$breakout = explode( " ", $text );

$result = array_intersect( $this->_currentTracks, $breakout );

我将推文切成单词,然后将它们与我当前的关键字进行匹配。这适用于所有没有空格的关键字。

如果我想找到例如“Den Haag”,它不会出现,因为字符串被分解成单词(基于空格)。

关于如何快速做到这一点的任何想法?

亲切的问候,蒂姆

4

1 回答 1

0

如果您有少量关键字要搜索,您可能会对基本的正则表达式方法感到满意:

if (preg_match('/\b(keyword1|keyword2|Den Haag)\b/i', $data['text'], $matches) !== FALSE) {
}

但是,如果关键字往往以相同的前缀开头(此处示例中的“关键字”),则使用大量关键字可能有点不理想。另一方面,它可能比搜索算法的一些更复杂的 PHP 实现更快。

您可以使用 implode('|', $array) 从关键字数组中准备正则表达式字符串,但是,如果您从外部源获取关键字(脚本中没有硬编码),则必须确保它是正确转义(关键字可能包含 | 等字符)。

于 2013-06-24T22:12:13.390 回答