php如何判断字符串中有多少个特定子字符串?

如判断“123abc456abcd789aabcd999”中有多少个“abc”?
已邀请:
匿名用户

匿名用户

赞同来自:

1、使用substr_count()函数:
<?php
$str = '123abc456abcd789aabcd999';
echo substr_count($str, 'abc'); //输出: 3

2、还可以使用preg_match_all()函数来找出所有指定的字符串:
<?php
$str = '123abc456abcd789aabcd999';
preg_match_all("#abc#u", $str, $match);
echo $match[0]; //输出:3
  
3、使用preg_match_all()简单明了,不过性能上稍微差了点。如果希望性能最优,对于只包含单字节字符的字符串可以使用strpos()函数,含有多字节字符(中文汉字)的字符串使用mb_strpos()函数。
<?php
$str = '我是爱E族,http://aiezu.com,百度:爱E族:淘宝';
$find = '爱E族'; //要查找的内容
$num = $pos =  0;
while( ($pos=mb_strpos($str, $find, $pos, 'UTF8')) !== false ) {
    $num++;
    $pos += mb_strlen($find, 'UTF8');
}
echo $num; //输出 2

要回复问题请先登录注册