我正在使用Twitter API流媒体每分钟收集数千条推文。 它们需要与关键字列表匹配(可以包含空格)。
这是我目前的方法:
$text = preg_replace( '/[^a-z0-9]+/i', ' ', strtolower( $data['text'] ) );
$breakout = explode( " ", $text );
$result = array_intersect( $this->_currentTracks, $breakout );
我将推文翻译成单词,并将其与我当前的关键字进行匹配。 这适用于没有空格的所有关键字。
如果我想找到例如“Den Haag”,它将不会显示,因为字符串被分解为单词(基于空格)。
关于如何快速完成此任务的任何想法?
亲切的问候, 添
答案 0 :(得分:0)
如果您要搜索一小组关键字,您可能会对基本的正则表达式方法感到满意:
if (preg_match('/\b(keyword1|keyword2|Den Haag)\b/i', $data['text'], $matches) !== FALSE) {
}
但是,大量的关键字可能有点不理想,特别是如果关键字往往以相同的前缀开头(此处的示例中为“关键字”)。另一方面,它可能比搜索算法的一些更复杂的PHP实现更快。
您可以使用implode('|',$ array)从关键字数组中准备regexp字符串,但是,如果您从外部源获取关键字(在脚本中没有硬编码),则必须确保它被正确转义(关键字可能包含像|这样的字符。)