Overview
KB
Technical FAQ
PHP Manual
CSS2 Manual
HTML Manual
JS Guide
JS Reference
PhpDock Manual
Nu-Coder Manual
PhpExpress Manual
PHP Joomla
Development
Learn PHP
 
<substr_comparesubstr_replace>
^String FunctionsLast updated: Mon, 26 Oct 2026

substr_count

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

substr_count — Count the number of substring occurrences

Description

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

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

Note:

This function doesn't count overlapped substrings. See the example below!

Parameters

haystack

The string to search in

needle

The substring to search for

offset

The offset where to start counting. If the offset is negative, counting starts from the end of the string.

length

The 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 Values

This function returns an int.

Errors/Exceptions

Throws a ValueError if needle is empty, if offset is outside of haystack, or if length is outside of the part of haystack that follows offset.

Changelog

Version Description
8.0.0 Now 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.0 length is nullable now.
7.1.0 Support for negative offsets and lengths has been added. length may also be 0 now.

Examples

Example #1 A substr_count() example

<?php
$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;
?>

See Also

  • count_chars() - Return information about characters used in a string
  • strpos() - Find the position of the first occurrence of a substring in a string
  • substr() - Return part of a string
  • strstr() - Find the first occurrence of a string


<substr_comparesubstr_replace>
^String FunctionsLast updated: Mon, 26 Oct 2026