Signatur
Beschreibung
enchant_dict_suggest nutzt das angegebene Enchant-Wörterbuch, um alternative Schreibweisen für ein übergebenes Wort zu ermitteln. Die Funktion ist besonders nützlich, wenn enchant_dict_check ein Wort als falsch geschrieben markiert hat und dem Benutzer Korrekturvorschläge angeboten werden sollen.
Das Ergebnis ist ein Array mit Zeichenketten, die mögliche korrekte Schreibweisen des Wortes darstellen. Die Reihenfolge der Vorschläge richtet sich nach der Relevanz, die das zugrundeliegende Wörterbuch-Backend (z. B. Hunspell, Aspell) berechnet – der wahrscheinlichste Treffer steht meist an erster Stelle.
Die Funktion eignet sich hervorragend für die Implementierung von Rechtschreibprüfungs-Funktionen in Webanwendungen, CMS-Systemen oder Texteditoren, bei denen Nutzer auf Tippfehler hingewiesen und sofortige Korrekturen angeboten bekommen sollen.
Bevor enchant_dict_suggest aufgerufen werden kann, muss ein gültiges Wörterbuch-Objekt über enchant_broker_request_dict oder enchant_broker_request_pwl_dict beschafft werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $dictionary Pflicht | EnchantDictionary | Ein gültiges Enchant-Wörterbuch-Objekt, das zuvor mit enchant_broker_request_dict oder enchant_broker_request_pwl_dict erzeugt wurde. |
|
| $word Pflicht | string | Das Wort, für das alternative Schreibweisen gesucht werden sollen. Typischerweise ein zuvor als falsch erkanntes Wort. |
Rückgabewert
Beispiele
Schreibvorschläge für ein falsch geschriebenes Wort ermitteln
<?php
// Enchant-Broker erstellen
$broker = enchant_broker_init();
// Deutsches Wörterbuch anfordern
$dictionary = enchant_broker_request_dict($broker, 'de_DE');
if ($dictionary) {
$word = 'Schreibefehlr';
// Wort prüfen
if (!enchant_dict_check($dictionary, $word)) {
echo "'$word' ist falsch geschrieben. Vorschläge:\n";
$suggestions = enchant_dict_suggest($dictionary, $word);
if (!empty($suggestions)) {
foreach ($suggestions as $index => $suggestion) {
echo ($index + 1) . ". $suggestion\n";
}
} else {
echo "Keine Vorschläge verfügbar.\n";
}
} else {
echo "'$word' ist korrekt geschrieben.\n";
}
} else {
echo "Wörterbuch konnte nicht geladen werden.\n";
}
enchant_broker_free($broker);
Rechtschreibprüfung für einen längeren Text
<?php
$broker = enchant_broker_init();
$dictionary = enchant_broker_request_dict($broker, 'de_DE');
if ($dictionary) {
$text = 'Das ist ein Baysppiel mit mehrren Fehlern im Texd.';
$words = str_word_count($text, 1, 'äöüÄÖÜß');
foreach ($words as $word) {
if (!enchant_dict_check($dictionary, $word)) {
$suggestions = enchant_dict_suggest($dictionary, $word);
$bestSuggestion = $suggestions[0] ?? 'keine Vorschläge';
echo "Fehler: '$word' → Vorschlag: '$bestSuggestion'\n";
}
}
}
enchant_broker_free($broker);
// Wichtig · Fallstricke
PHP 8.0: Ab PHP 8.0 werden Enchant-Funktionen mit EnchantBroker- und EnchantDictionary-Objekten statt mit Ressourcen arbeitet. Älterer Code, der Ressource-Handles verwendet, muss ggf. angepasst werden.
Die Qualität und Anzahl der Vorschläge hängt stark vom installierten Wörterbuch-Backend ab. Hunspell und Aspell liefern in der Regel bessere Ergebnisse als einfachere Backends. Stellen Sie sicher, dass das gewünschte Sprach-Wörterbuch auf dem System installiert ist.
Das Ergebnis-Array kann je nach Wort und Backend sehr groß werden. Es empfiehlt sich, nur die ersten wenigen Vorschläge (z. B. die ersten 5–10) dem Benutzer anzuzeigen.