副文字列の出現回数を数える

# substr_count

(PHP 4, PHP 5, PHP 7, PHP 8)

substr_count — 副文字列の出現回数を数える

### 説明

function substr_count(
string `$haystack`,
string `$needle`,
int `$offset` = 0,
?int `$length` = `null`
): int

substr_count() は、文字列 `haystack` の中での副文字列 `needle` の出現回数を返します。 `needle` は英大小文字を区別することに注意してください。

> 注意:

> この関数は重なり合う副文字列をカウントしません。以下の例を見てください !

### パラメータ

`haystack`

  検索対象の文字列

`needle`

  検索する副文字列

`offset`

  開始位置のオフセット。 負の数を指定すると、文字列の末尾から数えます。

`length`

  指定したオフセット以降に副文字列で検索する最大長。 オフセットと長さの総和が `haystack` の長さよりも長い場合、警告が発生します。 負の数を指定すると、`haystack` の末尾から数えます。

### 戻り値

この関数は 整数を返します。

### 変更履歴

バージョン | 説明
--- | ---
8.0.0 | `length` は、nullable になりました。
7.1.0 | 負の `offset` と `length` をサポートするようになりました。 `length` は、`0` を指定しても問題ありません。

### 例

例1 substr_count() の例

    <?php
    $text = 'This is a test';
    echo strlen($text), PHP_EOL; // 14

    echo substr_count($text, 'is'), PHP_EOL; // 2

    // 文字列は 's is a test' になっているので, 1 が表示される
    echo substr_count($text, 'is', 3), PHP_EOL;

    // テキストは 's i' になっているので, 0 が表示される
    echo substr_count($text, 'is', 3, 3), PHP_EOL;

    // 重なっている副文字列はカウントされないので、1 が表示される
    $text2 = 'gcdgcdgcd';
    echo substr_count($text2, 'gcdgcd'), PHP_EOL;

    // 5+10 > 14 なので、例外がスローされる
    echo substr_count($text, 'is', 5, 10), PHP_EOL;
    ?>

### 参考

- count_chars() - 文字列で使用されている文字に関する情報を返す
- strpos() - 文字列内の部分文字列が最初に現れる場所を見つける
- substr() - 文字列の一部分を返す
- strstr() - 文字列が最初に現れる位置を見つける

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open