Start · Sprachen · PHP · Referenz · pspell_new

pspell_new

Funktion

Lädt ein neues Pspell-Wörterbuch und gibt eine Wörterbuch-Instanz zurück, die für Rechtschreibprüfungen verwendet werden kann.

seit PHP 4.0.2 Kategorie: string

Signatur

pspell_new(string $language, string $spelling = '', string $jargon = '', string $encoding = '', int $mode = 0): PSpell\Dictionary|false

Beschreibung

pspell_new() initialisiert ein neues Wörterbuch auf Basis der GNU Aspell/Pspell-Bibliothek. Das zurückgegebene PSpell\Dictionary-Objekt (bzw. in älteren PHP-Versionen ein Integer-Handle) wird anschließend an Funktionen wie pspell_check() oder pspell_suggest() übergeben, um Wörter auf korrekte Schreibung zu prüfen oder Vorschläge zu erhalten.

Der Parameter $language erwartet einen standardisierten Sprachcode nach ISO 639 (z. B. "de", "en" oder "en_US"). Über $spelling, $jargon und $encoding lässt sich das Wörterbuch weiter verfeinern, etwa für amerikanisches vs. britisches Englisch oder eine bestimmte Zeichenkodierung.

Mit dem Parameter $mode steuert man das Verhalten des Prüfers: Die Konstanten PSPELL_FAST, PSPELL_NORMAL und PSPELL_BAD_SPELLERS ermöglichen eine Balance zwischen Geschwindigkeit und Qualität der Vorschläge. Für feingranulare Konfiguration empfiehlt sich alternativ pspell_new_config() in Verbindung mit pspell_config_create().

Die Pspell-Erweiterung muss beim Compilieren von PHP aktiviert sein (--with-pspell) und setzt eine installierte Aspell-Bibliothek samt passenden Wörterbüchern auf dem System voraus.

Parameter

Name Typ Default Beschreibung
$language Pflicht string Sprachcode nach ISO 639, z. B. "de", "en" oder "en_US". Bestimmt, welches Wörterbuch geladen wird.
$spelling string Optionale Schreibweise für Sprachen mit mehreren Varianten, z. B. "american" oder "british" für Englisch.
$jargon string Zusätzliche Unterscheidungsinformation, wenn mehrere Wörterbücher für dieselbe Sprache und Schreibweise existieren.
$encoding string Erwartete Zeichenkodierung der zu prüfenden Wörter, z. B. "utf-8", "iso-8859-1". Leer bedeutet systemseitige Standardkodierung.
$mode int 0 Modus für die Vorschlagsgenerierung. Mögliche Werte: PSPELL_FAST (schnell, weniger Vorschläge), PSPELL_NORMAL (ausgewogen), PSPELL_BAD_SPELLERS (viele Vorschläge, langsamer). Kombinierbar mit PSPELL_RUN_TOGETHER per bitweisem OR.

Rückgabewert

Typ
PSpell\Dictionary|false
Beschreibung
Gibt bei Erfolg eine PSpell\Dictionary-Instanz zurück (vor PHP 8.1 einen Integer als Handle). Bei einem Fehler, z. B. wenn das gewünschte Wörterbuch nicht gefunden wird, wird false zurückgegeben.

Beispiele

Einfache Rechtschreibprüfung auf Englisch

<?php
$dictionary = pspell_new('en');

if ($dictionary === false) {
    echo 'Wörterbuch konnte nicht geladen werden.';
    exit;
}

$words = ['hello', 'wrold', 'PHP', 'speling'];

foreach ($words as $word) {
    if (pspell_check($dictionary, $word)) {
        echo "'{$word}' ist korrekt geschrieben.\n";
    } else {
        $suggestions = pspell_suggest($dictionary, $word);
        echo "'{$word}' ist falsch. Vorschläge: " . implode(', ', array_slice($suggestions, 0, 3)) . "\n";
    }
}
'hello' ist korrekt geschrieben. 'wrold' ist falsch. Vorschläge: world, word, words 'PHP' ist korrekt geschrieben. 'speling' ist falsch. Vorschläge: spelling, spieling, spewing

Deutsches Wörterbuch mit UTF-8 und normalem Modus

<?php
$dictionary = pspell_new('de', '', '', 'utf-8', PSPELL_NORMAL);

if ($dictionary === false) {
    echo 'Deutsches Wörterbuch nicht verfügbar.';
    exit;
}

$testWort = 'Rechtschreibung';

if (pspell_check($dictionary, $testWort)) {
    echo "'{$testWort}' ist korrekt geschrieben.\n";
} else {
    echo "'{$testWort}' ist falsch geschrieben.\n";
    $vorschlaege = pspell_suggest($dictionary, $testWort);
    echo 'Vorschläge: ' . implode(', ', $vorschlaege) . "\n";
}
'Rechtschreibung' ist korrekt geschrieben.

// Wichtig · Fallstricke

Voraussetzungen: Die Pspell-Erweiterung muss in PHP aktiviert sein, und auf dem Server müssen die entsprechenden Aspell-Wörterbücher installiert sein (z. B. unter Debian/Ubuntu: apt-get install aspell aspell-de).

PHP 8.1+: Ab PHP 8.1 gibt pspell_new() ein PSpell\Dictionary-Objekt zurück. In älteren Versionen war es ein einfaches Integer-Handle. Code, der das Handle direkt als Integer behandelt, muss ggf. angepasst werden.

Performance: Das Laden eines Wörterbuchs ist verhältnismäßig teuer. In Webanwendungen sollte das Dictionary-Objekt nach Möglichkeit nur einmal pro Request erzeugt und wiederverwendet werden. Für komplexe Konfigurationen bietet sich pspell_new_config() an.

Zeichenkodierung: Bei Verwendung von UTF-8-Texten sollte $encoding explizit auf "utf-8" gesetzt werden, da es sonst zu fehlerhaften Prüfergebnissen bei Umlauten und Sonderzeichen kommen kann.