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!
strcasecmp
(PHP 4, PHP 5)
strcasecmp — İkil olarak güvenilir ve harf büyüklüğüne duyarsız dizge karşılaştırması yapar
Açıklama
int strcasecmp
( string
$d1
, string $d2
)İkil olarak güvenilir ve harf büyüklüğüne duyarsız dizge karşılaştırması yapar.
Değiştirgeler
-
d1 -
İlk dizge.
-
d2 -
İkinci dizge.
Dönen Değerler
d1 dizgesi d2 dizgesinden
küçükse sıfırdan küçük bir değer; d1 dizgesi
d2 dizgesinden büyükse sıfırdan büyük bir değer;
d1 dizgesi ile d2 dizgesi
aynıysa sıfır döndürür.
Örnekler
Örnek 1 - strcasecmp() örneği
<?php
$d1 = "Hello";
$d2 = "hello";
if (strcasecmp($d1, $d2) == 0) {
echo '$d1 ve $d2 dizgeleri harf büyüklükleri dikkate alınmazsa aynıdırlar';
}
?>
Ayrıca Bakınız
- preg_match() - Bir düzenli ifadeyi eşleştirmeye çalışır
- strcmp() - İkil olarak güvenilir dizge karşılaştırması yapar
- substr() - Dizgenin bir kısmını döndürür
- stristr() - Harf büyüklüğüne duyarsız olarak ilk alt dizgeyi bulur
- strncasecmp() - İlk n karakteri ikil ve harf büyüklüğüne duyarsız olarak karşılaştırır
- strstr() - İlk alt dizgeyi bulur
Anonymous ¶
10 years ago
chris at cmbuckley dot co dot uk ¶
1 year 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 "ß".
alvaro at demogracia dot com ¶
2 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.
