Start · Sprachen · PHP · Referenz · pspell_suggest

pspell_suggest

Funktion

Gibt eine Liste von Rechtschreibvorschlägen für ein falsch geschriebenes Wort aus einem PSpell-Wörterbuch zurück.

seit PHP 4.0.2 Kategorie: string

Signatur

pspell_suggest(PSpell\Dictionary $dictionary, string $word): array|false

Beschreibung

pspell_suggest() fragt das angegebene PSpell-Wörterbuch nach alternativen Schreibweisen für das übergebene Wort ab und liefert ein Array mit Vorschlägen. Die Funktion wird typischerweise dann eingesetzt, wenn pspell_check() ein Wort als falsch geschrieben erkannt hat und dem Nutzer Korrekturalternativen angeboten werden sollen.

Das PSpell-System nutzt intern die Aspell-Bibliothek und berücksichtigt bei der Vorschlagsgenerierung die beim Öffnen des Wörterbuchs gewählten Optionen (z. B. Modus, Sprache). Über pspell_new() oder pspell_new_config() kann das Wörterbuch entsprechend konfiguriert werden, bevor Vorschläge angefordert werden.

Die Funktion eignet sich besonders für Webanwendungen, die eine Rechtschreibprüfung für Benutzereingaben anbieten – zum Beispiel in Formularen, Editoren oder Kommentarbereichen. Die Qualität und Anzahl der Vorschläge hängt vom gewählten PSpell-Modus ab (z. B. PSPELL_FAST, PSPELL_NORMAL oder PSPELL_BAD_SPELLERS).

Hinweis: Die PSpell-Erweiterung muss beim Kompilieren von PHP aktiviert werden und erfordert die installierten Aspell-Bibliotheken sowie passende Sprachpakete auf dem Server.

Parameter

Name Typ Default Beschreibung
$dictionary Pflicht PSpell\Dictionary Eine PSpell-Wörterbuch-Instanz, die zuvor mit pspell_new(), pspell_new_personal() oder pspell_new_config() erzeugt wurde.
$word Pflicht string Das zu prüfende Wort, für das Rechtschreibvorschläge generiert werden sollen.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein Array von Zeichenketten mit alternativen Schreibvorschlägen zurück. Im Fehlerfall wird false zurückgegeben. Wenn keine Vorschläge gefunden werden, kann das Array leer sein.

Beispiele

Einfache Rechtschreibvorschläge ausgeben

<?php
// Wörterbuch für Englisch öffnen
$dictionary = pspell_new('en');

$word = 'recieve'; // absichtlich falsch geschrieben

if (!pspell_check($dictionary, $word)) {
    $suggestions = pspell_suggest($dictionary, $word);
    echo "Das Wort '$word' ist falsch geschrieben.\n";
    echo "Vorschläge:\n";
    foreach ($suggestions as $suggestion) {
        echo ' - ' . $suggestion . "\n";
    }
} else {
    echo "Das Wort '$word' ist korrekt geschrieben.\n";
}
Das Wort 'recieve' ist falsch geschrieben. Vorschläge: - receive - reliever - receiver - ...

Rechtschreibprüfung mit benutzerdefiniertem Modus und Konfiguration

<?php
// Konfiguration erstellen und Modus setzen
$config = pspell_config_create('de');
pspell_config_mode($config, PSPELL_NORMAL);

// Wörterbuch anhand der Konfiguration öffnen
$dictionary = pspell_new_config($config);

$falscheWoerter = ['Klass', 'Programirung', 'Birtschaft'];

foreach ($falscheWoerter as $wort) {
    if (!pspell_check($dictionary, $wort)) {
        $vorschlaege = pspell_suggest($dictionary, $wort);
        if (!empty($vorschlaege)) {
            echo "'$wort' -> Vorschläge: " . implode(', ', array_slice($vorschlaege, 0, 3)) . "\n";
        } else {
            echo "'$wort' -> Keine Vorschläge gefunden.\n";
        }
    }
}
'Klass' -> Vorschläge: Klasse, Klas, Glas 'Programirung' -> Vorschläge: Programmierung, ... 'Birtschaft' -> Vorschläge: Wirtschaft, ...

// Wichtig · Fallstricke

Deprecation / Verfügbarkeit: Ab PHP 8.1.0 wurden die PSpell-Ressource-Handle durch das Objekt PSpell\Dictionary ersetzt. In älteren PHP-Versionen (5.x – 8.0) wird stattdessen ein int-Handle übergeben.

Abhängigkeiten: Die Funktion setzt voraus, dass die PHP-Erweiterung pspell installiert und aktiviert ist sowie die entsprechenden Aspell-Sprachpakete auf dem System vorhanden sind. Fehlt das Sprachpaket für die gewünschte Sprache, schlägt pspell_new() fehl.

Alternativen: Für moderne PHP-Projekte empfiehlt sich der Einsatz von externen Diensten oder Bibliotheken wie php-speller oder webbasierten APIs, da die PSpell-Erweiterung kaum noch aktiv weiterentwickelt wird und in einigen Server-Umgebungen nicht verfügbar ist.