PHP String substr_count() 函数
substr_count() 是 PHP 的内置函数。它统计给定字符串中子字符串出现的次数。substr_count() 是区分大小写的函数,这意味着它对大写字母和小写字母进行不同处理。
例如 – 子字符串 “cha” 在字符串 “CHaru” 中不存在。
注意: substr_count() 是区分大小写的函数。
该函数提供了一种计算子字符串在主字符串中出现的次数的方法。它还提供了在给定索引范围内搜索子字符串的选项。如果为搜索指定的起始位置和长度数值大于传入的字符串,则向用户返回一个警告。 PHP 4 及以上版本 支持此函数。
注意: substr_count() 函数不计算重叠的子字符串。(见示例3)。
语法
substr_count() 的语法如下,它接受四个参数,两个字符串和两个整数类型的值。
substr_count(string,substring, start,length)
参数
$string(必需): $string
参数是要计算子字符串出现次数的主要字符串参数。它是substr_count()函数的必需参数。
$substring(必需): 在此参数中传递的值将在$string
参数中搜索,并返回子字符串的计数出现次数。这也是substr_count()函数的必需参数。
$start(可选): 该参数由一个整数值构成。它指定从何处开始计数。$start
是此函数的可选参数。如果在此参数中传递的值为负数,则会从字符串的末尾开始计数。
$length(可选): 该参数是可选的,并且取决于$start
参数。如果$start
和$length
的组合(start +length)
大于$string
的长度,则substr_count()会生成警告。负数长度总是从字符串的末尾计数。
返回值
substr_count返回一个整数,表示子字符串在主字符串中出现的次数。
变更日志
- 在PHP 5.1.0中添加了两个新参数,即
$start
和$length
。 - 从PHP 7.1.0开始,
$star
和$length
也支持负值。现在$length
也可以是0。
示例
以下给出了一些示例。通过这些示例,学习在程序中实际实现substr_count()函数的方法。
示例1: 不带有可选参数的程序。
<?php
strin = "Good Health Good Life";sub_str = "Good";
echo substr_count(strin,sub_str);
?>
输出:
在上面的示例中,”Good”子字符串在主字符串中出现了2次。
2
示例2: 当传入$start
参数时的程序。
<?php
strin = "Good Health Good Life";sub_strin = "Good";
echo substr_count(strin,sub_strin, 5);
?>
输出:
在上面的示例中,”Good”子字符串在主字符串中只出现一次,因为搜索是从第5个位置开始的。
1
示例3: 程序当start和length两个参数都传递时。
<?php
strin = "Good Health Good Life";sub_strin = "Good";
echo substr_count(strin,sub_strin, 5, 10);
?>
输出:
在上面的示例中,“Good”子字符串在主字符串中没有被找到,因为搜索是从第5个位置开始到第15个位置(start+length)
。
0
示例 4: 区分大小写
<?php
strin = "Good Health Good Life";sub_strin = "LIFE";
echo substr_count(strin,sub_strin);
?>
输出:
在上面的示例中,由于substr_compare()是区分大小写的函数,所以在主字符串中找不到”LIFE”子字符串。
0
示例5:
<?php
strin = "Hello javaworld";sub_strin = "Hello";
echo substr_count(strin,sub_strin, 5,12);
?>
输出:
这里发生了一个警告,因为start + length > strin,即(5+12 > 15)。$start + $length
参数的长度不应超过主字符串的长度。
Warning: substr_count(): Invalid length value in C:\xampp\htdocs\xampp\PMA\substr_count.php on line 4
示例6: 重叠的子字符串
<?php
strin = "Hello javava";sub_strin = "java";
echo substr_count(strin,sub_strin);
?>
输出:
它返回了1,因为它没有计算重叠的子字符串。
1