首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将单词数组与文本块进行匹配的快速方法?

将单词数组与文本块进行匹配的快速方法?
EN

Stack Overflow用户
提问于 2009-09-16 01:12:08
回答 4查看 727关注 0票数 2

这个主题可能不像它可能的那样清晰,但我正在努力想出一种更好的方式来描述它。

我正在对我们从XML提要中提取的一些文章实现一个坏词过滤器。目前,我将坏词放入数组中,简单地检查文本,如下所示;

代码语言:javascript
复制
str_replace($badwords, '', $text, $count); 
if ($count > 0) // We have bad words... 

但是这太慢了!太慢了!当我试图一次处理30,000+文章时,我开始怀疑是否有更好的方法来实现这一点。如果只有strpos支持的数组!即使这样,我也不认为它会更快。

我很乐意给你任何建议。提前感谢!

编辑:

现在,我已经在调用microtime()之间测试了一些方法来对它们进行计时。str_replace() = 990秒preg_match() = 1029秒(请记住,我只需要识别它们,而不是替换它们)没有不好的词过滤= 1057秒(大概是因为它还有1000多篇用词不好的文章要处理。

谢谢你所有的答案,我将继续使用str_replace。:)

EN

回答 4

Stack Overflow用户

发布于 2009-09-16 01:16:27

将所有单词组合在一个正则表达式中以一次性替换所有内容如何?我不确定它的性能如何,但它可能会更快。

例如。

代码语言:javascript
复制
preg_replace('/(' . implode('|', $badwords) . ')/i', '', $text);
票数 2
EN

Stack Overflow用户

发布于 2009-09-16 01:46:23

我以前在当地的报社工作。我所做的不是修改文本来删除原始文件中的坏词,而是在用户请求查看文章时运行过滤器。这样,如果您需要原始文本,您可以保留它,但也可以为您的观众提供一个干净的版本。应该没有必要一次处理30,000篇文章,除非我误解了什么。

票数 2
EN

Stack Overflow用户

发布于 2009-09-16 01:19:05

定义“慢”?任何要处理30,000篇文章的工作都可能需要一些时间才能完成。

也就是说,一种选择(我还没有对其进行基准测试,只是将其抛出以供考虑)是将单词组合到正则表达式中,并通过preg_replace运行该正则表达式(只需使用|运算符将它们放在一起)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1430429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档