dogdogdogdogsdogdogdogs
如果没有正则表达式,我怎么算“狗”和“狗”出现多少次?
答案 0 :(得分:11)
substr_count()返回在haystack字符串中出现针子串的次数。请注意针头区分大小写。
但,您说您想要计算dog
和 dogs
的出现次数。如果先检查dogs
,然后检查dog
,则会得到偏差的结果(因为dogs
会被计算两次)。
如果您的示例字面上为dog
和dogs
,则需要从dogs
中减去dog
的计数,以获得正确的计数。
如果您正在使用不同单词的程序化方法,则需要事先检查是否有任何单词是另一个单词的一部分。
为更简单的方法欢呼为SilentGhost。
答案 1 :(得分:3)
substr_count('dogdogdogdog', 'dog');
答案 2 :(得分:1)
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()
返回的数字 针子串发生的次数 干草堆串。请注意 针是区分大小写的。
答案 3 :(得分:0)
substr_count('dogdogdogdogsdogdogdogs', 'dog');
// returns 7
答案 4 :(得分:0)
好吧,除了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;
这种方法解决了the problem Pekka mentioned in his answer。作为额外的好处,您还可以使用str_ireplace()
进行不区分大小写的搜索,这是substr_count()
无法使用的内容。
从PHP手册:
substr_count()
返回的数字 次 needle 子串发生在 haystack 字符串。 请注意 needle 区分大小写。