如何在两个字符串中找到相似单词的数量?

时间:2013-04-21 16:45:54

标签: php

我有两个叮咬:

$var_x = "Depending structure";
$var_y = “Depending on the structure of your array ";

您能否告诉我如何找到var_y中var_x中有多少单词? 为此,我做了以下事情:

$pieces1 = explode(" ", $var_x);
$pieces2 = explode(" ", $var_y);
$result=array_intersect($pieces1, $pieces2);
//Print result here?

但是这并没有显示var_y

中有多少var_x字

1 个答案:

答案 0 :(得分:5)

使用explode()将给定字符串拆分为单词是错误的。 世界并不完美,你不能确保每个单词都用空格分隔。

请参阅以下内容:

  • “这是一个测试句” - 来自explode()的5个单词
  • “这是一个测试句。一言不发。” - 8个字,你会得到“句子”。一句话。
  "This is a test

sentence"
     

- 爆炸中的4个单词,“test \ nsentence”是一个单词。

以上示例仅表明使用explode()是完全错误的。 使用str_word_count()

$var_x = "Depending structure";
$var_y = "Depending on the structure of your array ";
$pieces1 = str_word_count($var_x, 1);
$pieces2 = str_word_count($var_y, 1);
$result=array_intersect(array_unique($pieces1), array_unique($pieces2));
print count($result);

这将是(int)2,您将看到您的explode()方法返回相同的值。但在不同的复杂情况下,上述方法会给出正确的字数(另请注意array_unique()使用)