PHP substr_count()
函数用于计算子字符串在给定字符串中出现的次数。
substr_count() 是一个区分大小写的函数,即大小写敏感。例如子字符串"cha"在字符串"CHARu"中不存在,因为它大小写敏感。
此函数提供了计算子字符串在主字符串中出现的次数。它还提供了在给定索引范围内搜索子字符串的选项。如果为搜索指定的起始值和长度值大于传递的字符串,则它会向用户返回警告。
语法
语法如下,它接受四个参数,两个字符串,两个整数类型值。
substr_count($string, $substring, $start, $length)
参数
参数 | 说明 | 必须/可选 |
---|---|---|
string | 要搜索的主字符串 | 必须 |
substring | 要搜索的子字符串,即子字符串在主字符串出现的次数。 | 必须 |
start | 该参数为一个整数。它指定从哪里开始计数。 $start 是此函数的可选参数。该参数传入的值为负数,从字符串末尾开始计数。 | 可选 |
length | 该参数取决于 $start 参数。如果 $start 和 $length 一起 ($start+$length) 大于 $string 的长度, substr_count() 将生成警告。负长度始终从字符串末尾开始计算。 | 可选 |
返回值
substr_count 返回一个整数,表示它返回子字符串在主字符串中出现的次数。
注意
- PHP 4 和以上版本支持此函数。
- substr_count() 函数不计算重叠子串。
- substr_count() 是一个区分大小写的函数。
更新日志
- 在 PHP 5.1.0 中,添加了两个新参数,即 $start 和 $length。
- 从 PHP 7.1.0 , $start 和 $length 也支持负值。现在长度也可以为0。
示例
下面给出一些示例。借助这些示例了解程序中 substr_count()
函数的使用方法。
示例1
没有可选参数的例子。
<?php
$strin = "Good Health Good Life";
$sub_str = "Good";
echo substr_count($strin, $sub_str);
?>
输出:
2
在上面的示例中,"Good"子字符串在主字符串中出现了 2 次。
示例2
传递 $start 参数时的例子。
<?php
$strin = "Good Health Good Life";
$sub_strin = "Good";
echo substr_count($strin, $sub_strin, 5);
?>
输出:
1
在上面的例子中,"Good"子字符串在 主字符串 中只找到一次字符串,因为搜索是从第 5 序位开始的。
示例3
当 $start 和 $length 两个参数都被传递时的例子。
<?php
$strin = "Good Health Good Life";
$sub_strin = "Good";
echo substr_count($strin, $sub_strin, 5, 10);
?>
输出:
0
在上面的例子中,在主字符串中没有找到"Good"子字符串,因为搜索是从第 5 序位到第 15 序位 ($start+$length)。
示例4
区分大小写例子
<?php
$strin = "Good Health Good Life";
$sub_strin = "LIFE";
echo substr_count($strin, $sub_strin);
?>
输出:
0
在上面的例子,在主字符串中没有找到"LIFE"子字符串,因为 substr_count() 是一个区分大小写的函数。
例子5
<?php
$strin = "Hello yxjc123";
$sub_strin = "Hello";
echo substr_count($strin, $sub_strin, 5,12);
?>
输出:
Warning: substr_count(): Invalid length value in D:\phpstudy_pro\WWW\test\string.php on line 4
这里出现警告,因为 start + length> strin,即 (5+12> 13)。 $start + $length 参数的长度不能超过主字符串的长度。
示例6
重叠子字符串例子
<?php
$strin = "Hello javava";
$sub_strin = "java";
echo substr_count($strin, $sub_strin);
?>
输出:
1
它返回 1,因为它没有计算重叠的子字符串。