substr_compare

(PHP 5)

substr_compareБинарно-безопасное сравнение 2 строк со смещением, с учетом или без учета регистра

Описание

int substr_compare ( string $main_str , string $str , int $offset [, int $length [, bool $case_insensitivity = false ]] )

substr_compare() сравнивает строку main_str (начиная с позиции offset) со строкой str. В сравнении участвуют максимум length символов.

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

main_str

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

str

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

offset

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

length

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

case_insensitivity

Если case_sensitivity имеет значение TRUE, сравнение выполняется с учетом регистра.

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

Возвращает отрицательное число, если строка main_str (начиная с символа offset) меньше, чем str; положительное число, если она больше str; 0 если строки равны. Если offset больше или равен длине main_str или length передан и меньше 1, substr_compare() выводит предупреждение и возвращает FALSE.

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

Версия Описание
5.1.0 Добавлена возможность использования отрицательных значений в offset.

Примеры

Пример #1 Пример использования substr_compare()

<?php
echo substr_compare("abcde""bc"12); // 0
echo substr_compare("abcde""de", -22); // 0
echo substr_compare("abcde""bcg"12); // 0
echo substr_compare("abcde""BC"12true); // 0
echo substr_compare("abcde""bc"13); // 1
echo substr_compare("abcde""cd"12); // -1
echo substr_compare("abcde""abc"51); // предупреждение
?>

Коментарии

Автор:
Modified version of the original posted function. Use this one:

<?php
if (!function_exists('substr_compare')) {
    function 
substr_compare($main_str$str$offset$length NULL$case_insensitivity false) {
       
$offset = (int) $offset;

       
// Throw a warning because the offset is invalid
       
if ($offset >= strlen($main_str)) {
           
trigger_error('The start position cannot exceed initial string length.'E_USER_WARNING);
            return 
false;
        }

       
// We are comparing the first n-characters of each string, so let's use the PHP function to do it
       
if ($offset == && is_int($length) && $case_insensitivity === true) {
            return 
strncasecmp($main_str$str$length);
        }

       
// Get the substring that we are comparing
       
if (is_int($length)) {
           
$main_substr substr($main_str$offset$length);
           
$str_substr substr($str0$length);
        } else {
           
$main_substr substr($main_str$offset);
           
$str_substr $str;
        }

       
// Return a case-insensitive comparison of the two strings
       
if ($case_insensitivity === true) {
            return 
strcasecmp($main_substr$str_substr);
        }

       
// Return a case-sensitive comparison of the two strings
       
return strcmp($main_substr$str_substr);
    }
}
?>
2005-05-23 08:07:21
http://php5.kiev.ua/manual/ru/function.substr-compare.html

    Поддержать сайт на родительском проекте КГБ