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
 
<substrsubstr_count>
^String FunctionsLast updated: Mon, 26 Oct 2026

substr_compare

(PHP 5, PHP 7, PHP 8)

substr_compare — Binary safe comparison of two strings from an offset, up to length characters

Description

function substr_compare(
    string $haystack,
    string $needle,
    int $offset,
    ?int $length = null,
    bool $case_insensitive = false
): int

substr_compare() compares haystack from position offset with needle up to length characters.

Parameters

haystack

The main string being compared.

needle

The secondary string being compared.

offset

The start position for the comparison. If negative, it starts counting from the end of the string.

length

The length of the comparison. The default value is the largest of the length of the needle compared to the length of haystack minus the offset.

case_insensitive

If case_insensitive is true, comparison is case insensitive.

Return Values

Returns a value less than 0 if string1 is less than string2; a value greater than 0 if string1 is greater than string2, and 0 if they are equal. No particular meaning can be reliably inferred from the value aside from its sign.

Errors/Exceptions

Throws a ValueError if offset is greater than the length of haystack and length is not 0, or if length is less than 0.

Changelog

Version Description
8.2.0 This function is no longer guaranteed to return strlen($string1) - strlen($string2) when string lengths are not equal, but may now return -1 or 1 instead.
8.0.0 Now throws a ValueError if offset is out of range or length is negative. Previously, an E_WARNING was raised and false was returned.
8.0.0 length is nullable now.
7.2.18, 7.3.5 offset may now be equal to the length of haystack.

Examples

Example #1 A substr_compare() example

<?php
echo substr_compare("abcde", "bc", 1, 2), PHP_EOL; // 0
echo substr_compare("abcde", "de", -2, 2), PHP_EOL; // 0
echo substr_compare("abcde", "bcg", 1, 2), PHP_EOL; // 0
echo substr_compare("abcde", "BC", 1, 2, true), PHP_EOL; // 0
echo substr_compare("abcde", "bc", 1, 3), PHP_EOL; // 1
echo substr_compare("abcde", "cd", 1, 2), PHP_EOL; // -1
echo substr_compare("abcde", "abc", 5, 1), PHP_EOL; // -1
?>

See Also

  • strncmp() - Binary safe string comparison of the first n characters


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