выяснить, сколько раз слово появляется - PullRequest
4 голосов
/ 10 февраля 2010

dogdogdogdogsdogdogdogs

Как бы я посчитал, сколько раз "собака" и "собаки" появлялись без регулярного выражения?

Ответы [ 5 ]

11 голосов
/ 10 февраля 2010

Использование substr_count ()

substr_count () возвращает количество раз, когда подстрока иглы встречается в строке сена. Обратите внимание, что игла чувствительна к регистру.

Однако , вы говорите, что хотите сосчитать вхождения dog и dogs. Если вы сначала проверите для dogs, а затем для dog, вы получите искаженные результаты (потому что dogs засчитывается дважды).

Если ваш пример буквально dog и dogs, вам нужно вычесть счет для dogs из этого значения для dog, чтобы получить правильный счет.

Если вы работаете над программным подходом с разными словами, вам необходимо заранее проверить, является ли какое-либо из слов частью другого слова.

Приветствует SilentGhost за более простой подход.

3 голосов
/ 10 февраля 2010

Использование substr_count().

substr_count('dogdogdogdog', 'dog');
1 голос
/ 10 февраля 2010

Функция substr_count должна выполнять только то, что вы просите:

$str = 'dogdogdogdogsdogdogdogs';
$a = substr_count($str, 'dog');
var_dump($a);

Получит вам:

int 7


Цитируя своистраница документации:

int substr_count  ( string $haystack  , string $needle  
    [, int $offset = 0  [, int $length  ]] )

substr_count() возвращает число раз, когда подстрока иглы встречается в строке сена.Обратите внимание, что игла чувствительна к регистру.

0 голосов
/ 10 февраля 2010

Ну, кроме substr_count() вы также можете использовать старый добрый str_replace():

$string = 'dogdogdogdogsdogdogdogs';

$str = str_replace('dogs', '', $string, $count);
echo 'Found ' . $count . ' time(s) "dogs" in ' . $string;

$str = str_replace('dog', '', $str, $count);
echo 'Found ' . $count . ' time(s) "dog" in ' . $string;

Этот подход решает проблему, упомянутую Пеккой в ​​его ответе . В качестве дополнительного преимущества вы также можете использовать str_ireplace() для поиска без учета регистра , на что substr_count() не способен.

Из руководства по PHP:

substr_count() возвращает количество раз подстрока игла встречается в строка стога сена . Обратите внимание что игла чувствительна к регистру.

0 голосов
/ 10 февраля 2010

substr_count

substr_count('dogdogdogdogsdogdogdogs', 'dog');
// returns 7
...