获取术语数组(或字符串),如何有效地删除常用术语


Taking an array (or string) of terms, how do I efficiently go about removing common terms?

这是一个有点模棱两可的问题,为此我深表歉意。

有大量的单词,我使用以下代码从$_POST值中获取:

$text2check = array();          
$fields = array( "etymology", "distribution", "habitat", "max_size", "aquarium_size", "maintenance", "water_chemistry", "diet",
    "behaviour", "dimorphism", "reproduction", "misc_notes" );
$fields = array( "distribution" );
foreach ( $_POST as $key => $value ) {
    if ( in_array( $key, $fields ) ) {
        $text2check = array_merge( $text2check, explode( " ", strip_tags( utf8_decode( $value ) ) ) );
    }
}

我想做的 - 以绝对最大的效率 - 是删除某些单词:

  • 重复
  • 少于 4 个字符的单词
  • 常用术语...

常用术语是我根本不熟悉的东西。如何确定常用词?它是否只是硬编码互联网上找到的一系列常用术语并与之进行比较的情况?

在比较数组和数组时,最有效的方法是什么?


编辑:解释

这个函数背后的目的对我来说有点复杂。根据这个答案,我正在尝试运行一个内容过滤器,该过滤器检查某些术语,然后将它们链接到我网站的其他部分。由于每个帖子的字数和潜在链接量很大,我正在尝试在运行过滤器之前进行预检查,以减少我需要运行过滤器的链接数量。

因此,常用术语基本上是任何经常出现并且肯定不会链接的术语;经常使用的术语,如"有时","显然"等。


提前感谢,

为了删除重复项,array_unique() 就可以了。

四个字符以下的单词,只需遍历数组并检查即可。

就常用术语而言,您可以遍历数据并删除出现次数超过 X 次的术语,除此之外,我认为您必须对它们进行硬编码。