Signatur
Beschreibung
enchant_broker_set_ordering ermöglicht es, für einen bestimmten Sprach-Tag die Priorität der zu verwendenden Rechtschreibprüfungs-Backends zu steuern. Enchant unterstützt mehrere Backends wie aspell, hunspell, myspell oder ispell. Mit dieser Funktion kann man festlegen, welches Backend bevorzugt genutzt werden soll, wenn für eine Sprache mehrere Backends verfügbar sind.
Der Parameter ordering ist eine kommagetrennte Liste von Backend-Namen (z. B. "hunspell,aspell"). Enchant versucht dann, die Backends in der angegebenen Reihenfolge zu laden. Als Platzhalter kann "*" verwendet werden, um alle verbleibenden verfügbaren Backends in der Standardreihenfolge einzuschließen.
Die Funktion ist nützlich, wenn auf einem System mehrere Rechtschreibprüfungs-Bibliotheken installiert sind und man sicherstellen möchte, dass eine bestimmte Bibliothek vorrangig verwendet wird — etwa weil ein bestimmtes Backend bessere Wörterbuchdaten für eine Sprache bietet oder weil es performanter ist.
Die Einstellung gilt ab dem Zeitpunkt des Aufrufs für neu angeforderte Wörterbücher über denselben EnchantBroker.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $broker Pflicht | EnchantBroker | Eine gültige Enchant-Broker-Instanz, die zuvor mit enchant_broker_init() erstellt wurde. |
|
| $tag Pflicht | string | Der Sprach-Tag (z. B. "de_DE", "en_US"), für den die Backend-Reihenfolge festgelegt werden soll. |
|
| $ordering Pflicht | string | Eine kommagetrennte Liste von Backend-Namen in der gewünschten Prioritätsreihenfolge, z. B. "hunspell,aspell,*". Das Sternchen * steht als Platzhalter für alle übrigen verfügbaren Backends. |
Rückgabewert
true zurück, wenn die Reihenfolge erfolgreich gesetzt wurde, andernfalls false.Beispiele
Bevorzugtes Backend für Deutsch festlegen
<?php
// Broker initialisieren
$broker = enchant_broker_init();
// Für Deutsch soll hunspell bevorzugt werden, danach aspell, dann alle anderen
$success = enchant_broker_set_ordering($broker, 'de_DE', 'hunspell,aspell,*');
if ($success) {
echo "Backend-Reihenfolge erfolgreich gesetzt.\n";
} else {
echo "Fehler beim Setzen der Backend-Reihenfolge.\n";
}
// Jetzt ein Wörterbuch für Deutsch anfordern
if (enchant_broker_dict_exists($broker, 'de_DE')) {
$dict = enchant_broker_request_dict($broker, 'de_DE');
// Wörterbuch verwenden ...
enchant_broker_free_dict($dict);
}
enchant_broker_free($broker);
Nur ein bestimmtes Backend zulassen
<?php
$broker = enchant_broker_init();
// Ausschließlich hunspell für Englisch verwenden
enchant_broker_set_ordering($broker, 'en_US', 'hunspell');
if (enchant_broker_dict_exists($broker, 'en_US')) {
$dict = enchant_broker_request_dict($broker, 'en_US');
$word = 'helllo';
if (!enchant_dict_check($dict, $word)) {
$suggestions = enchant_dict_suggest($dict, $word);
echo "Vorschläge für '$word': " . implode(', ', $suggestions) . "\n";
}
enchant_broker_free_dict($dict);
}
enchant_broker_free($broker);
// Wichtig · Fallstricke
Reihenfolge der Aufrufe beachten: enchant_broker_set_ordering muss vor dem Aufruf von enchant_broker_request_dict() aufgerufen werden, da die Reihenfolge nur für neu angeforderte Wörterbücher gilt und bereits geöffnete Wörterbücher nicht beeinflusst werden.
Ab PHP 8.0 ist der erste Parameter ein EnchantBroker-Objekt; in früheren Versionen war es eine Ressource. Beim Portieren von älterem Code auf PHP 8+ muss dies berücksichtigt werden.
Ist keines der in ordering angegebenen Backends installiert, schlägt die anschließende Anforderung eines Wörterbuchs fehl. Das Sternchen * als letztes Element stellt sicher, dass als Fallback alle verfügbaren Backends einbezogen werden.