Частота поиска - PullRequest
       17

Частота поиска

0 голосов
/ 06 декабря 2011

Желательно решения PHP - но любые идеи были бы хорошими.

Дайте текстовый блоб

'Это супер строка некоторого контента, где я хочу найти красные свитера и фиолетовые слоны,Фиолетовые слоны будут считать дважды.и красные свитера будут считать 3 раза, так как красные свитера встречаются трижды '

и список фраз

' красные свитера, фиолетовые слоны '

хотят найти текстовый объекти вернуть счетчик чисел

поэтому

красные свитера = 3 и фиолетовые слоны = 2

Ответы [ 3 ]

4 голосов
/ 06 декабря 2011

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));
}
2 голосов
/ 06 декабря 2011

Вы можете использовать substr_count , который будет искать строки внутри текста. Просто отметьте, что в вашем примере, если текст был «коричневые свитера», это будет означать +1 для «красных свитеров».

Вы также можете использовать регулярные выражения . Что-то вроде preg_match("/$string/",$text);. Это вернет время, когда строка была найдена.

Также, если вы хотите найти несколько строк, разделенных запятой (как в вашем примере), вам сначала нужно разделить строку. Для этого вы можете использовать explode . $strings = explode(",",$search);

1 голос
/ 06 декабря 2011

Примерно так должно работать:

<?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 () все в приведенном выше коде). Это может быть легко удалено, так что код выше также чувствителен к регистру.

...