1

我有两个刺痛:

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

你能告诉我我怎么知道var_x中有多少个单词在var_y中?为了做到这一点,我做了以下事情:

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

但这并没有显示多少 var_x 单词在 var_y

4

1 回答 1

5

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

请参阅以下行:

  • “这是一个测试句”——explode() 中的 5 个单词
  • “这是一个测试句。不是一个词。” - 8个字,你会得到“句子”。作为一个词。
  "This is a test

sentence"

- 来自explode 的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()使用)

于 2013-04-21T17:26:22.190 回答