當前位置: 首頁> 最新文章列表> 用substr_count函數統計字符串中某個字符出現次數的方法詳解

用substr_count函數統計字符串中某個字符出現次數的方法詳解

gitbox 2025-06-15

1. substr_count()函數的基本語法

substr_count()函數的基本語法如下:

 substr_count(string $haystack, string $needle, int $offset = 0, int $length = NULL): int
  • $haystack :要搜索的主字符串。

  • $needle :要查找的子字符串(或單個字符)。

  • $offset :可選參數,指定從哪個位置開始查找(默認是從字符串的開頭開始)。

  • $length :可選參數,指定查找的最大長度(默認查找整個字符串)。

該函數返回一個整數,表示$needle$haystack中出現的次數。如果$needle不存在於$haystack中,則返回0。


2. 基本示例

假設我們有一個字符串,我們想要統計其中某個字符的出現次數,下面是一個簡單的例子:

 <?php
$string = "hello world, hello PHP!";
$char = "o";

// 使用 substr_count 函數統計字符 "o" 出現的次數
$count = substr_count($string, $char);

echo "字符 '$char' 出現的次數是: $count"; // 輸出:字符 'o' 出現的次數是: 3
?>

在上面的代碼中,我們統計了字符"o"在字符串"hello world, hello PHP!"中出現的次數,結果輸出為3。


3. 統計子字符串出現次數

除了統計單個字符出現次數外, substr_count()也可以用來統計子字符串在目標字符串中出現的次數。舉個例子:

 <?php
$string = "abcabcabcabc";
$substring = "abc";

// 使用 substr_count 函數統計子字符串 "abc" 出現的次數
$count = substr_count($string, $substring);

echo "子字符串 '$substring' 出現的次數是: $count"; // 輸出:子字符串 'abc' 出現的次數是: 4
?>

在這個例子中,我們統計了子字符串"abc"在字符串"abcabcabcabc"中出現的次數,輸出結果為4。


4. 使用offsetlength參數

substr_count()函數還支持offsetlength參數,允許我們限制查找範圍。舉個例子:

 <?php
$string = "hello world, hello PHP!";
$char = "o";

// 從索引位置 5 開始查找,最多查找 10 個字符
$count = substr_count($string, $char, 5, 10);

echo "字符 '$char' 從索引 5 開始,最多查找 10 個字符,出現的次數是: $count"; // 輸出:字符 'o' 從索引 5 開始,最多查找 10 個字符,出現的次數是: 1
?>

在此示例中,我們從字符串的第5 個字符開始,限制查找的最大長度為10 個字符,因此我們只統計了在"world, hello PHP!"部分的字符"o"的出現次數,結果為1。


5. 注意事項

  • substr_count()函數區分大小寫,因此"o""O"被認為是不同的字符。如果需要不區分大小寫的查找,可以先將字符串轉換為統一的大小寫,例如使用strtolower()strtoupper()

    例如:

     <?php
    $string = "Hello World, hello PHP!";
    $char = "o";
    
    // 將字符串轉換為小寫後再查找
    $count = substr_count(strtolower($string), strtolower($char));
    
    echo "字符 '$char' 在不区分大小写的情况下出現的次數是: $count"; // 輸出:字符 'o' 在不区分大小写的情况下出現的次數是: 3
    ?>
    
  • 如果$needle是空字符串, substr_count()會返回0。這是因為一個空字符串無法作為子字符串來統計。