strcasecmp

(PHP 4, PHP 5)

strcasecmpVergleich von Zeichenketten ohne Unterscheidung der Groß- und Kleinschreibung (Binary safe)

Beschreibung

int strcasecmp ( string $str1 , string $str2 )

Groß- und kleinschreibungsunabhängiger Vergleich zweier Zeichenketten, der binary safe ausgeführt wird.

Parameter-Liste

str1

Die erste Zeichenkette.

str2

Die zweite Zeichenkette.

Rückgabewerte

Ist str1 kleiner als str2 wird ein Wert < 0 zurückgegeben, ist str1 größer als str2 ein Wert > 0, und bei Gleichheit gibt die Funktion 0 zurück.

Beispiele

Beispiel #1 strcasecmp()-Beispiel

<?php
$var1 
"Hallo";
$var2 "hallo";
if (
strcasecmp($var1$var2) == 0) {
    echo 
'$var1 ist gleich $var2 bei einem String-Vergleich'
       
'ohne Berücksichtigung von Groß- und Kleinschreibung';
}
?>

Siehe auch

  • strcmp() - Vergleich zweier Strings (Binary safe)
  • preg_match() - Führt eine Suche mit einem regulären Ausdruck durch
  • substr_compare() - Binärdaten-sicherer Vergleich zweier Strings, beginnend an einer bestimmten Position und endend nach einer festgelegten Länge
  • strncasecmp() - Binärdaten-sicherer und groß- und kleinschreibungs-unabhängiger Stringvergleich der ersten n Zeichen
  • stristr() - Wie strstr, aber unabhängig von Groß- bzw. Kleinschreibung
  • substr() - Gibt einen Teil eines Strings zurück

add a note add a note

User Contributed Notes 3 notes

up
8
Anonymous
11 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
5
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
3 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