PHP 字符串函数

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,因为它没有计算重叠的子字符串。