PHP语言:如何计算出字符串中某个字符串出现的次数?

比如求出 fdjborsnabcdtghrjosthabcrgrjtabc 中的 abc 出现的次数。
2024-12-05 02:16:14
推荐回答(4个)
回答1:

php内置就有个函数可以的 翻翻php手册就能找到的

substr_count
(PHP 4, PHP 5)
substr_count — 计算字串出现的次数

说明
intsubstr_count ( string$haystack , string$needle [, int$offset = 0 [, int$length ]] )
substr_count() 返回子字符串needle 在字符串 haystack 中出现的次数。注意 needle 区分大小写。

参数haystack在此字符串中进行搜索。
needle要搜索的字符串。
offset开始计数的偏移位置。
length指定偏移位置之后的最大搜索长度。如果偏移量加上这个长度的和大于 haystack 的总长度,则打印警告信息。
返回值 该函数返回整型。

回答2:

很多实现方法的。
1、利用abc进行分词,如果为1,则max(0,-1)=0,若大于等于1,explode结果减1即为abc个数。
echo max(0,count(explode('abc',$str))-1);
2、利用str_replace函数count属性,str_replace('abc','',$str,$count);echo $count;
3、preg_match_all('/abc/',$str,$matches);echo count($matches);

回答3:

概括起来两个方法吧。
方法一
$string = 'fdjborsnabcdtghrjosthabcrgrjtabc';
$string = preg_replace('/[abc]+/i','',$string);
方法二
把字符串转化成数组
$arr = str_split($string);
foreach( $arr as $key => $value ){
if( in_array($value,array('a','b','c')) ){
unset($arr[$key]);
}
}
$string = implode('',$arr);
强烈推荐方法一,方法二不支持字符串中有中文。

回答4:

$str = 'fdjborsnabcdtghrjosthabcrgrjtabc';
$find = 'abc';

preg_match_all('/'.$find.'/', $str, $matches);

// 输出 3
echo count($matches[0]);