Signatur
Beschreibung
collator_create() ist die prozedurale Variante von Collator::create() und erzeugt ein Collator-Objekt basierend auf der angegebenen Locale (z. B. 'de_DE', 'fr_FR'). Dieses Objekt kann anschließend verwendet werden, um Zeichenketten nach den sprachspezifischen Regeln zu vergleichen oder zu sortieren.
Standardmäßiges PHP-Sortieren (sort(), strcmp() etc.) berücksichtigt keine sprachlichen Eigenheiten wie Umlaute (ä, ö, ü), Akzentzeichen oder andere lokale Sortierregeln. Ein Collator-Objekt löst dieses Problem, indem es die ICU-Bibliothek (International Components for Unicode) nutzt, um Vergleiche nach den definierten Regeln der jeweiligen Sprache durchzuführen.
Die Funktion ist Teil der intl-Erweiterung (Internationalization Functions) und erfordert, dass diese Erweiterung in PHP installiert und aktiviert ist. Typische Anwendungsfälle sind mehrsprachige Webanwendungen, bei denen Benutzernamen, Produktnamen oder andere Texte korrekt nach der jeweiligen Sprache sortiert werden sollen.
Wenn eine ungültige oder unbekannte Locale angegeben wird, gibt die Funktion null zurück. Mit 'root' als Locale lässt sich ein Unicode-konformer Standard-Collator ohne sprachspezifische Anpassungen erstellen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $locale Pflicht | string | Die Locale, für die der Collator erstellt werden soll (z. B. 'de_DE', 'en_US', 'fr_FR'). Der Wert 'root' erzeugt einen sprachneutralen Unicode-Collator. Eine leere Zeichenkette ('') verwendet die Standard-Locale des Systems. |
Rückgabewert
Collator-Objekt zurück. Wenn die Locale ungültig ist oder der Collator nicht erstellt werden konnte, wird null zurückgegeben.Beispiele
Deutsche Umlaute korrekt sortieren
<?php
$names = ['Österreich', 'Apfel', 'Übung', 'Brot', 'Änderung', 'Zebra'];
// Ohne Collator (falsche Sortierung für Deutsch)
sort($names);
print_r($names);
// Mit Collator für Deutsch
$names = ['Österreich', 'Apfel', 'Übung', 'Brot', 'Änderung', 'Zebra'];
$collator = collator_create('de_DE');
collator_sort($collator, $names);
print_r($names);
Zwei Zeichenketten sprachsensitiv vergleichen
<?php
$collator = collator_create('de_DE');
if ($collator === null) {
echo 'Collator konnte nicht erstellt werden.';
exit;
}
$result = collator_compare($collator, 'Müller', 'Mueller');
if ($result < 0) {
echo 'Müller kommt vor Mueller';
} elseif ($result > 0) {
echo 'Mueller kommt vor Müller';
} else {
echo 'Beide Zeichenketten sind gleichwertig';
}
Fehlerbehandlung bei ungültiger Locale
<?php
$collator = collator_create('xx_INVALID');
if ($collator === null) {
echo 'Fehler: Collator konnte für die angegebene Locale nicht erstellt werden.';
} else {
echo 'Collator erfolgreich erstellt.';
}
// Wichtig · Fallstricke
Voraussetzung: Die intl-Erweiterung muss in PHP aktiviert sein (extension=intl in der php.ini). Ohne diese Erweiterung ist weder collator_create() noch die Klasse Collator verfügbar.
OOP-Alternative: collator_create('de_DE') ist äquivalent zu new Collator('de_DE') bzw. Collator::create('de_DE'). In objektorientiertem Code wird die Verwendung von new Collator() bevorzugt.
Rückgabe prüfen: Da die Funktion bei Fehler null zurückgibt, sollte der Rückgabewert stets auf null geprüft werden, bevor das Objekt verwendet wird, um fatale Fehler zu vermeiden.