php[world] 2019 — 25 years of PHP

strcasecmp

(PHP 4, PHP 5, PHP 7)

strcasecmp대소문자 구분 없는 바이너리 안전 문자열 비교

설명

int strcasecmp ( string $str1 , string $str2 )

대소문자 구분 없는 바이너리 안전 문자열 비교입니다.

인수

str1

첫번째 문자열

str2

두번째 문자열

반환값

str1str2보다 작다면 < 0을 반환하고; str1str2보다 크다면 > 0을 반환합니다. 동일하다면 0을 반환합니다.

예제

Example #1 strcasecmp() 예제

<?php
$var1 
"Hello";
$var2 "hello";
if (
strcasecmp($var1$var2) == 0) {
    echo 
'대소문자를 구별하지 않는 문자열 비교에서 $var1은 $var2와 동일합니다.';
}
?>

참고

  • preg_match() - 정규표현식 매치를 수행
  • strcmp() - 바이너리 안전 문자열 비교
  • substr() - Return part of a string
  • stristr() - 대소문자를 구분하지 않는 strstr
  • strncasecmp() - 대소문자 구분 없는 처음 n 문자의 바이너리 안전 문자열 비교
  • strstr() - 문자열이 처음으로 나오는 부분을 찾습니다

add a note add a note

User Contributed Notes 4 notes

up
14
chris at cmbuckley dot co dot uk
7 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
12
Anonymous
16 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
7
alvaro at demogracia dot com
8 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.
up
0
chrislarham at NOSPAM dot outlook dot com
9 months ago
I didn't see any explanation in the documentation as to precisely how the positive/negative return values are calculated for unequal strings.

After a bit of experimentation it appears that it's the difference in alphabetical position of the first character in unequal strings.

For example, the letter 'z' is the 26th letter while the letter 'a' is the 1st letter:

<?php

      $zappl
= "zappl";
     
$apple = "apple";

      echo
strcasecmp($zappl, $apple); #outputs 25 [26 - 1]
     
echo strcasecmp($apple, $zappl); #outputs -25 [1 - 26]

?>

This might be incredibly obvious to most people, but hopefully it will clarify the calculation process for some others.
To Top