substr_compare

(PHP 5, PHP 7, PHP 8)

substr_compareСравнивает две строки со смещения до заданного количества символов в бинарно безопасном режиме

Описание

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

Функция substr_compare() сравнивает строку haystack с позиции смещения offset с подстрокой needle до заданного в параметре length количества символов.

Список параметров

haystack

Основная сравниваемая строка.

needle

Следующая сравниваемая строка.

offset

Стартовая позиция сравнения. Если отрицательна, то обозначает смещение с конца строки.

length

Длина сравнения. По умолчанию используется максимальная из длин needle и haystack минус offset.

case_insensitive

Если значение параметра case_insensitive равно true, сравнение выполняется без учёта регистра.

Возвращаемые значения

Функция возвращает значение меньше 0, если строка string1 меньше строки string2; значение больше 0, если строка string1 больше строки string2, и 0, если строки равны. Из значения возврата невозможно надёжно вывести конкретное значение, кроме знака числа.

Функция substr_compare() выводит предупреждение и возвращает false, если параметр offset больше (до PHP 7.2.18, 7.3.5) или равен длине параметра haystack, или если передали аргумент length, а его значение оказалось меньше 0.

Список изменений

Версия Описание
8.2.0 Функция больше не гарантирует возврат разницы strlen($string1) - strlen($string2), когда длины строк не равны, но теперь вместо этого иногда возвращает -1 или 1.
8.0.0 Параметр length теперь принимает значение null.
7.2.18, 7.3.5 Параметр offset теперь может равняться параметру haystack.

Примеры

Пример #1 Пример сравнения строк функцией substr_compare()

<?php

echo substr_compare("abcde", "bc", 1, 2); // 0
echo substr_compare("abcde", "de", -2, 2); // 0
echo substr_compare("abcde", "bcg", 1, 2); // 0
echo substr_compare("abcde", "BC", 1, 2, true); // 0
echo substr_compare("abcde", "bc", 1, 3); // 1
echo substr_compare("abcde", "cd", 1, 2); // -1
echo substr_compare("abcde", "abc", 5, 1); // Предупреждение

?>

Смотрите также

  • strncmp() - Сравнивает первые n символов строк в бинарно безопасном режиме