Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
 
 
 

PHP strcasecmp() verstehen: Fallunempfindlicher String-Vergleich (mit Beispielen und Fallstricken)

Sie befinden sich: Home > Php Tutorial > So funktioniert...

So funktioniert strcasecmp() - Strings sicher vergleichen und sortieren


Eintrag am:  04.06.2025
Hits / Besucher:  72
Sprache:  Deutsch
Kategorie:  Fortgeschrittene...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

strcasecmp() vergleicht zwei Zeichenketten, ohne ihre Groß- oder Kleinschreibung zu berücksichtigen in der Zeichenkette. Diese Fähigkeit spart Zeit, wenn Benutzereingaben, Nutzernamen oder andere Textdaten geprüft werden, bei denen die Schreibweise schwanken darf.

Modernes Titelbild mit PHP-Logo, Buchstabenvergleich A/a und Text „PHP strcasecmp() - Case-insensitive Stringvergleich“.

Was ist strcasecmp() und wofür wird es verwendet?

strcasecmp() setzt zwei Strings gleich, selbst wenn sich ihre Buchstaben­größen unterscheiden. Ein „a“ gilt damit als dasselbe Zeichen wie ein „A“.

Ein solcher Vergleich hilft beim Validieren von Formularfeldern oder beim Sortieren von Daten, weil er Tipp­varianten zuverlässig abfängt.

Die PHP strcasecmp() Funktion im Detail

Im Alltag greifen Entwickler zu strcasecmp(), wenn sie zwei Zeichenketten direkt abgleichen möchten, ohne vorher selbst die Groß-/Kleinschreibung anzupassen. Die nächsten Abschnitte beleuchten Syntax, Parameter und Rückgabewerte Schritt für Schritt.

Syntax

Schon die Funktionssignatur zeigt den einfachen Einsatz:

int strcasecmp(string $sString1, string $sString2) 
  • $sString1 – erster Vergleichsstring
  • $sString2 – zweiter Vergleichsstring

Beide Parameter dürfen beliebige Zeichen enthalten, auch Ziffern oder Sonderzeichen.

Rückgabewert verstehen

strcasecmp() liefert drei mögliche Ergebnisse:

Rückgabewert Bedeutung
0 Strings sind identisch (case-insensitive).
< 0 $sString1 liegt lexikografisch vor $sString2.
> 0 $sString1 liegt lexikografisch hinter $sString2.

PHP prüft die Zeichen dabei lexikografisch, also Buchstabe für Buchstabe. Es arbeitet sich von links nach rechts durch den Text, bis eine Abweichung auftaucht.

Seit PHP 8.2 ist nur noch das Vorzeichen verlässlich; die exakte Zahl kann variieren.

Wie strcasecmp() funktioniert: Binary Safe & ASCII-Grenzen

Die Funktion arbeitet binary safe: Sie verarbeitet rohe Bytes, ohne sie speziell zu interpretieren, und wandelt lediglich ASCII-Buchstaben intern in denselben Fall um. So entsteht der fallunempfindliche Vergleich.

Die ASCII-Einschränkung und fehlende Locale-Awareness

Nur Zeichen von A-Z und a-z werden fallunempfindlich behandelt. Umlaute, Akzente, das „ß“ oder Zeichen aus anderen Schriftsystemen bleiben außen vor, weil strcasecmp() weder Unicode- noch Locale-Regeln kennt.

Zeichen Fallunempfindlich? Hinweis
A / a Ja ASCII-Bereich
Ä / ä Nein Nicht ASCII
é / É Nein Nicht ASCII
ß Nein Nicht ASCII
Я / я Nein Nicht ASCII

strcasecmp() Anwendungsbeispiele

Die nächsten Beispiele zeigen, wie ein fallunempfindlicher Vergleich in der Praxis aussieht und worauf es dabei ankommt.

Grundlegendes Beispiel: Gleichheit unabhängig von Groß-/Kleinschreibung

<?php 
/** Zwei Strings unterscheiden sich nur in der Schreibweise */

$sErgebnis = strcasecmp('Test', 'test');

/** $sErgebnis ist 0, weil die Strings gleich sind */

echo $sErgebnis;
// 0

?>

Beispiel mit ungleichen Strings

<?php 

/** 'Apfel' steht alphabetisch vor 'Banane' */

$iVergleich = strcasecmp('Apfel', 'Banane');

/** $iVergleich ist < 0 */

echo $iVergleich; // z. B. -1

?>
<?php 
/** 'Birne' folgt auf 'Apfel' */

$iVergleich = strcasecmp('Birne', 'Apfel');

/** $iVergleich ist > 0 */

echo $iVergleich; // z. B. 1

?>

Beispiel in einer bedingten Anweisung

<?php 

$sEingabe = 'admin';

$sErwartet = 'Admin';


if (strcasecmp($sEingabe, $sErwartet) === 0) {

/** Zugang gewähren */

echo 'Willkommen!';

} else {

/** Zugang verweigern */

echo 'Benutzername falsch!';
}

?>

Beispiel: Fallunempfindliche Sortierung mit usort()

<?php 
$aNamen = ['sven', 'Sven', 'Peter', 'peter', 'Anna'];


usort($aNamen, function ($sA, $sB) {

/** strcasecmp sorgt für case-insensitive Sortierung */

return strcasecmp($sA, $sB);

});


print_r($aNamen);

/** Ergebnis: ['Anna', 'Peter', 'peter', 'sven', 'Sven'] */
?>

Umgang mit Multibyte-Strings

Außerhalb des ASCII-Spektrums stößt strcasecmp() jedoch schnell an Grenzen. Umlaute, Akzente oder Zeichen anderer Alphabete bringen die Funktion aus dem Takt.

Das Problem

<?php 

$iVergleich = strcasecmp('Straße', 'straße');

/** Ergebnis ist nicht 0, weil ß und s nicht gleichgesetzt werden */

echo $iVergleich;
?>

Die Lösung: mb_strcasecmp()

Die Multibyte-Funktion mb_strcasecmp() vergleicht auch Nicht-ASCII-Zeichen zuverlässig.

Syntax

int mb_strcasecmp( 
string $sString1, string $sString2, ?string $sEncoding = null)

sString1 und sString2 sind die beiden Zeichenketten, die geprüft werden sollen. Das optionale $encoding legt den Zeichensatz fest (z. B. “UTF-8”).

Beispiel

<?php 

/** Multibyte-Extension muss aktiv sein */

$iVergleich = mb_strcasecmp('Straße', 'straße', 'UTF-8');

/** $iVergleich ist 0 */

echo $iVergleich;

?>

Alternative Methode: Umwandlung und Vergleich

Steht mb_strcasecmp() nicht zur Verfügung, lässt sich der Vergleich auch über eine Kombination aus mb_strtolower() und strcmp() nachbilden:

<?php 

$sA = mb_strtolower('Straße', 'UTF-8');

$sB = mb_strtolower('straße', 'UTF-8');

$iVergleich = strcmp($sA, $sB);

echo $iVergleich; // 0

?>

strcasecmp() im Vergleich zu ähnlichen Funktionen

strcasecmp() gehört zu einer kleinen Familie von Vergleichsfunktionen. Die Tabelle fasst die wesentlichen Unterschiede zusammen:

Funktion Case-Sensitivity Typischer Einsatz
strcmp() Ja Exakter Vergleich, Groß-/Kleinschreibung zählt
strcasecmp() Nein ASCII-Strings ohne Beachtung der Schreibweise
strncasecmp() Nein Wie strcasecmp(), aber auf n Zeichen begrenzt
stristr() Nein Teilstrings suchen, case-insensitive (ASCII)
mb_strcasecmp() Nein Unicode-fähiger Vergleich über alle Zeichensätze

Kurzer Vergleich

  • strcmp() nutzt man, wenn die exakte Schreibweise relevant ist.
  • strcasecmp() reicht, wenn ausschließlich ASCII-Zeichen vorkommen.
  • strncasecmp() beschränkt den Vergleich auf eine feste Zeichenzahl.
  • stristr() hilft, einen Teilstring ohne Beachtung der Schreibweise zu finden.
  • mb_strcasecmp() ist die moderne Wahl für Texte jenseits von reinen ASCII-Daten.

PHP Versionskompatibilität

strcasecmp() existiert seit PHP 4. Seit Version 8.2 garantiert PHP nur noch das Vorzeichen des Rückgabewerts; die genaue Zahl kann abweichen.

Zusammenfassung & Fazit

strcasecmp() erledigt den fallunempfindlichen Vergleich von ASCII-Strings schnell und zuverlässig. Bei Texten mit Umlauten, Akzenten oder fremden Schriften greift man besser zu mb_strcasecmp() oder einem ähnlichen Unicode-tauglichen Ansatz. Die Wahl der Funktion sollte daher stets vom erwarteten Zeichensatz abhängen: ASCII? → strcasecmp(). Alles andere? → mb_strcasecmp() oder entsprechende Alternativen.

 


Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.