2013-04-21 2 views
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

ответ

5

Использование explode() разделить данную строку слов является неправильным. Мир не идеален, и вы не можете убедиться, что каждое слово будет разделено пробелом.

Смотрите следующие строки:

  • «Это тест приговор» - 5 слов из взрываются()
  • «Это тест приговор ни слова.». - 8 слов, вы получите «предложение». как слово.
"This is a test 

sentence" 

- 4 слова из взрываются, "тест \ 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); 

Это будет (целое) 2, и вы увидите, что ваш метод взорваться() возвращает то же значение. Но в разных и сложных случаях выше метод даст правильный подсчет слов (также обратите внимание на использование array_unique())

+0

nice answer @Ayesh –

+0

Спасибо @WayneTunMyint. –

+0

@AyeshK Большое спасибо за подробное объяснение этого мне. Это было очень полезно. ස්තුති –

Смежные вопросы