substr_count()

substr_count() — Count the number of substring occurrences.

Built-in function of PHP 8.5. The manual lists it as available in PHP 4, PHP 5, PHP 7, PHP 8. This page is the reference card: signature, parameters and return value, plus the changelog and the example the manual provides.

What it does

substr_count() returns the number of times the needle substring occurs in the haystack string. Please note that needle is case sensitive.

Signature

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

Parameters

ParameterTypeWhat it takes
$haystackstringThe string to search in
$needlestringThe substring to search for
$offsetintThe offset where to start counting. If the offset is negative, counting starts from the end of the string.
$length?intThe maximum length after the specified offset to search for the substring. A ValueError is thrown if the offset plus the length is greater than the haystack length. A negative length counts from the end of haystack.

Return value

This function returns an int.

Example

A runnable snippet:

$text = 'This is a test'; echo strlen($text), PHP_EOL; // 14 echo substr_count($text, 'is'), PHP_EOL; // 2 // the string is reduced to 's is a test', so it prints 1 echo substr_count($text, 'is', 3), PHP_EOL; // the text is reduced to 's i', so it prints 0 echo substr_count($text, 'is', 3, 3), PHP_EOL; // prints only 1, because it doesn't count overlapped substrings $text2 = 'gcdgcdgcd'; echo substr_count($text2, 'gcdgcd'), PHP_EOL; // throws an exception because 5+10 > 14 echo substr_count($text, 'is', 5, 10), PHP_EOL;

Changelog

VersionChange
8.0.0Now throws a ValueError instead of raising an E_WARNING and returning false when needle is empty or offset or length is out of range.
8.0.0length is nullable now.
7.1.0Support for negative offsets and lengths has been added. length may also be 0 now.

See also

count_chars(), strpos(), substr(), strstr()

All PHP 8.5 built-in functions

Reference card built from the PHP manual page substr_count() (PHP documentation, CC BY 3.0). The page is generated from the manual, so the wording of the parameter and return value text follows php.net.