Signatur
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
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";
}
}
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";
}
// 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.