strcasecmp

(PHP 4, PHP 5)

strcasecmpБинарно-безопасное сравнение строк без учета регистра

Описание

int strcasecmp ( string $str1 , string $str2 )

Бинарно-безопасное сравнение строк без учета регистра.

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

str1

Первая строка

str2

Вторая строка

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

Возвращает отрицательное число, если str1 меньше, чем str2, положительное число, если str1 больше, чем str2, и 0 если строки равны.

Примеры

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

<?php
$var1 
"Hello";
$var2 "hello";
if (
strcasecmp($var1$var2) == 0) {
    echo 
'$var1 равно $var2 при сравнении без учета регистра';
}
?>

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

  • strcmp() - Бинарно-безопасное сравнение строк
  • preg_match() - Выполняет проверку на соответствие регулярному выражению
  • substr_compare() - Бинарно-безопасное сравнение 2 строк со смещением, с учетом или без учета регистра
  • strncasecmp() - Бинарно-безопасное сравнение первых n символов строк без учета регистра
  • stristr() - Регистро-независимый вариант функции strstr
  • substr() - Возвращает подстроку

add a note add a note

User Contributed Notes 3 notes

up
10
Anonymous
12 years ago
The sample above is only true on some platforms that only use a simple 'C' locale, where individual bytes are considered as complete characters that are converted to lowercase before being differentiated.

Other locales (see LC_COLLATE and LC_ALL) use the difference of collation order of characters, where characters may be groups of bytes taken from the input strings, or simply return -1, 0, or 1 as the collation order is not simply defined by comparing individual characters but by more complex rules.

Don't base your code on a specific non null value returned by strcmp() or strcasecmp(): it is not portable. Just consider the sign of the result and be sure to use the correct locale!
up
6
chris at cmbuckley dot co dot uk
2 years ago
A simple multibyte-safe case-insensitive string comparison:

<?php

function mb_strcasecmp($str1, $str2, $encoding = null) {
    if (
null === $encoding) { $encoding = mb_internal_encoding(); }
    return
strcmp(mb_strtoupper($str1, $encoding), mb_strtoupper($str2, $encoding));
}

?>

Caveat: watch out for edge cases like "ß".
up
1
alvaro at demogracia dot com
4 years ago
Don't forget this is a single-byte function: in Unicode strings it'll provide incoherent results as soon as both strings differ only in case. There doesn't seem to exist a built-in multi-byte alternative so you need to write your own, taking into account both character encoding and collation.
To Top