(PHP 5, PHP 7, PHP 8)
substr_compare — Сравнивает две строки со смещения до заданного количества символов в бинарно безопасном режиме
$haystack
,$needle
,$offset
,$length
= null
,$case_insensitive
= false
Функция substr_compare() сравнивает часть строки haystack
с подстрокой needle
.
Параметр offset
определяет, какую часть строки сравнивает функция,
а параметр 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), 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
?>