Частота поиска
Желательно PHP решения - но любые идеи будут отличными.
Дать текстовый блоб
"Это супер строка некоторого содержания, где я хочу найти красные свитера и фиолетовых слонов. Фиолетовые слоны будут считать дважды. и красные свитера будут считать 3 раза, так как красные свитера встречаются три раза "
и список фраз
'красные свитера, фиолетовые слоны'
хочу найти текстовый блоб и вернуть количество вхождений
следовательно
красные свитера = 3 и фиолетовые слоны = 2
3 ответа
http://www.php.net/manual/en/function.substr-count.php
$string = 'This is a super string of some content whree I want to find red sweaters and purple elephants. The purple elephants will count twice. and the red sweaters will count 3 times since red sweaters occurs three times';
$keys = 'red sweaters, purple elephants';
$pkeys = explode(', ', $keys);
foreach($pkeys as $key)
{
printf("%s occourrences: %d\n", $key, substr_count($string, $key));
}
Вы можете использовать substr_count, который будет искать строки внутри текста. Просто обратите внимание, что в вашем примере, если текст был "коричневые свитера", это будет означать +1 для "красных свитеров".
Вы также можете использовать регулярные выражения. Что-то вроде preg_match("/$string/",$text);
, Это вернет время, когда строка была найдена.
Также, если вы хотите найти несколько строк, разделенных запятой (как в вашем примере), вам сначала нужно разделить строку. Вы можете использовать взорваться для этого. $strings = explode(",",$search);
Примерно так должно работать:
<?php
$string = strtolower('This is a super string of some content whree I want to find red sweaters and purple elephants. The purple elephants will count twice. and the red sweaters will count 3 times since red sweaters occurs three times');
$allprases = 'red sweaters, purple elephants'
$phrasearray = explode(',',$allphrases);
foreach ($phrasearray as $k => $phrase) {
$phrase = strtolower(trim($phrase));
echo 'String '.$phrase.' found '.substr_count($string,$phrase).' times.<br />';
}
?>
Обратите внимание, что substr_count чувствителен к регистру (вот почему я strtolower() все в приведенном выше коде). Это может быть легко удалено, так что код выше также чувствителен к регистру.