Start · Sprachen · PHP · Referenz · enchant_dict_store_replacement

enchant_dict_store_replacement

Funktion

Speichert eine benutzerdefinierte Ersetzung (Korrektur) für ein falsch geschriebenes Wort im Enchant-Wörterbuch.

seit PHP 8.0.0 Kategorie: string

Signatur

enchant_dict_store_replacement(EnchantDictionary $dictionary, string $misspelled, string $correct): bool

Beschreibung

enchant_dict_store_replacement teilt dem Enchant-Wörterbuch mit, dass $correct die bevorzugte Korrektur für das falsch geschriebene Wort $misspelled ist. Diese Information wird persistent gespeichert und beeinflusst künftige Vorschläge, die enchant_dict_suggest für dieses Wort liefert.

Die Funktion ist besonders nützlich, wenn automatische Vorschläge für bestimmte Wörter regelmäßig unpassend sind und eine feste, domänen­spezifische Korrektur gewünscht wird – etwa in Fachvokabular, Eigennamen oder projektspezifischen Termini.

Beachte, dass die Persistenz der gespeicherten Ersetzung vom verwendeten Backend (z. B. Hunspell, Aspell, Myspell) und dessen Konfiguration abhängt. Nicht alle Backends unterstützen das Speichern von Ersetzungen gleichermaßen dauerhaft.

Parameter

Name Typ Default Beschreibung
$dictionary Pflicht EnchantDictionary Eine geöffnete Enchant-Wörterbuch-Ressource, die mit enchant_broker_request_dict oder enchant_broker_request_pwl_dict erstellt wurde.
$misspelled Pflicht string Das falsch geschriebene Wort, für das eine Korrektur hinterlegt werden soll.
$correct Pflicht string Das korrekte Wort, das als bevorzugte Ersetzung für $misspelled gespeichert wird.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. wenn das Backend das Speichern von Ersetzungen nicht unterstützt).

Beispiele

Benutzerdefinierte Korrektur für ein häufig falsch geschriebenes Wort speichern

<?php
$broker = enchant_broker_init();

if (enchant_broker_dict_exists($broker, 'de_DE')) {
    $dict = enchant_broker_request_dict($broker, 'de_DE');

    // Korrektur speichern: "Tpyofehler" soll zu "Tippfehler" korrigiert werden
    $result = enchant_dict_store_replacement($dict, 'Tpyofehler', 'Tippfehler');

    if ($result) {
        echo "Ersetzung erfolgreich gespeichert." . PHP_EOL;
    } else {
        echo "Speichern fehlgeschlagen." . PHP_EOL;
    }

    // Vorschläge für das falsch geschriebene Wort abrufen
    $suggestions = enchant_dict_suggest($dict, 'Tpyofehler');
    echo "Vorschläge: " . implode(', ', $suggestions) . PHP_EOL;
} else {
    echo "Wörterbuch de_DE nicht verfügbar." . PHP_EOL;
}
Ersetzung erfolgreich gespeichert. Vorschläge: Tippfehler, ...

Ersetzungen für fachspezifische Begriffe in einem persönlichen Wörterbuch

<?php
$broker = enchant_broker_init();
$pwlFile = '/tmp/mein_woerterbuch.pwl';

// Persönliches Wörterbuch öffnen
$dict = enchant_broker_request_pwl_dict($broker, $pwlFile);

// Domänenspezifische Korrekturen festlegen
$replacements = [
    'PHP-Objct'   => 'PHP-Objekt',
    'Iteraion'    => 'Iteration',
    'Skalierng'   => 'Skalierung',
];

foreach ($replacements as $wrong => $right) {
    if (enchant_dict_store_replacement($dict, $wrong, $right)) {
        echo "Ersetzung gespeichert: '$wrong' -> '$right'" . PHP_EOL;
    }
}
Ersetzung gespeichert: 'PHP-Objct' -> 'PHP-Objekt' Ersetzung gespeichert: 'Iteraion' -> 'Iteration' Ersetzung gespeichert: 'Skalierng' -> 'Skalierung'

// Wichtig · Fallstricke

Vor PHP 8.0 wurde anstelle eines EnchantDictionary-Objekts eine Ressource (resource) übergeben. Mit PHP 8.0 wurden diese Enchant-Ressourcen durch Objekte ersetzt.

Nicht alle Enchant-Backends speichern benutzerdefinierte Ersetzungen dauerhaft. Insbesondere bei Hunspell kann das Verhalten je nach Systemkonfiguration variieren. Es empfiehlt sich, den Rückgabewert zu prüfen, bevor auf die Speicherung vertraut wird.

Die gespeicherte Ersetzung erhöht die Wahrscheinlichkeit, dass enchant_dict_suggest das korrekte Wort an erster Stelle der Vorschlagsliste zurückgibt, garantiert dies jedoch nicht bei allen Backends.