Signatur
Beschreibung
pspell_new_personal öffnet ein Aspell-Wörterbuch für die angegebene Sprache und bindet gleichzeitig eine persönliche Wortliste ein. Diese persönliche Wortliste ist eine Textdatei, in der benutzerdefinierte Wörter gespeichert werden können, die das Standard-Wörterbuch nicht kennt. Neue Wörter können zur persönlichen Liste hinzugefügt und anschließend mit pspell_save_wordlist dauerhaft gespeichert werden.
Die Funktion eignet sich besonders für Anwendungen, bei denen Benutzer individuelle Fachbegriffe, Eigennamen oder firmeneigene Ausdrücke zur Rechtschreibprüfung hinzufügen sollen. Typische Einsatzszenarien sind CMS-Systeme, E-Mail-Clients oder Texteditoren mit eingebetteter Rechtschreibkorrektur.
Der Parameter $mode steuert den Prüfmodus und kann mit den Konstanten PSPELL_FAST, PSPELL_NORMAL oder PSPELL_BAD_SPELLERS angegeben werden. Soll die persönliche Wortliste zunächst nur im Arbeitsspeicher gepflegt werden, steht pspell_add_to_personal zur Verfügung; für die Sitzungswortliste bietet sich pspell_add_to_session an.
Hinweis: Die pspell-Erweiterung muss bei der PHP-Kompilierung aktiviert worden sein (--with-pspell) und setzt eine funktionierende Aspell-Installation auf dem Server voraus.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $personal Pflicht | string | Vollständiger Pfad zur persönlichen Wortlistendatei. Existiert die Datei noch nicht, wird sie beim Speichern mit pspell_save_wordlist angelegt. |
|
| $language Pflicht | string | Sprachcode nach ISO 639 (z. B. 'de' für Deutsch oder 'en' für Englisch), optional gefolgt von einem ISO-3166-Ländercode (z. B. 'de_DE'). |
|
| $spelling | string | Optionale Schreibweise für Sprachen mit mehreren Varianten, z. B. 'american' oder 'british' für Englisch. |
|
| $jargon | string | Zusätzliche Information zur Auswahl des richtigen Wörterbuchs, wenn mehrere Wörterbücher für dieselbe Sprache und Schreibweise vorhanden sind. | |
| $encoding | string | Zeichenkodierung der Eingabe, z. B. 'utf-8', 'iso8859-1' oder 'koi8-r'. Standardmäßig wird die Systemeinstellung verwendet. |
|
| $mode | int | 0 | Betriebsmodus der Rechtschreibprüfung. Mögliche Konstanten: PSPELL_FAST (schnell, weniger Vorschläge), PSPELL_NORMAL (Standard), PSPELL_BAD_SPELLERS (viele Vorschläge, langsamer). Kombinierbar mit PSPELL_RUN_TOGETHER für zusammengeschriebene Wörter. |
Rückgabewert
PSpell\Dictionary-Objekt (vor PHP 8.1 eine Ganzzahl als Ressource-ID) zurück. Im Fehlerfall, etwa wenn das Wörterbuch nicht gefunden wird oder die persönliche Wortlistendatei nicht zugänglich ist, wird false zurückgegeben.Beispiele
Einfache Rechtschreibprüfung mit persönlicher Wortliste
<?php
// Persönliche Wortliste einbinden und deutsches Wörterbuch öffnen
$pspell = pspell_new_personal(
'/var/www/data/meine_woerter.pws',
'de',
'',
'',
'utf-8',
PSPELL_NORMAL
);
if ($pspell === false) {
echo 'Wörterbuch konnte nicht geladen werden.';
exit;
}
$wort = 'Rechtschreibung';
if (pspell_check($pspell, $wort)) {
echo "'$wort' ist korrekt geschrieben.\n";
} else {
echo "'$wort' ist falsch geschrieben. Vorschläge: ";
$vorschlaege = pspell_suggest($pspell, $wort);
echo implode(', ', $vorschlaege) . "\n";
}
Eigenes Wort zur persönlichen Wortliste hinzufügen und speichern
<?php
$pfad = '/var/www/data/meine_woerter.pws';
$pspell = pspell_new_personal(
$pfad,
'de',
'',
'',
'utf-8',
PSPELL_NORMAL
);
if ($pspell === false) {
echo 'Fehler beim Laden des Wörterbuchs.';
exit;
}
$fachbegriff = 'Microservice';
if (!pspell_check($pspell, $fachbegriff)) {
// Wort zur persönlichen Liste hinzufügen
pspell_add_to_personal($pspell, $fachbegriff);
// Persönliche Wortliste auf der Festplatte speichern
pspell_save_wordlist($pspell);
echo "'$fachbegriff' wurde zur persönlichen Wortliste hinzugefügt und gespeichert.\n";
} else {
echo "'$fachbegriff' ist bereits im Wörterbuch vorhanden.\n";
}
// Wichtig · Fallstricke
Dateizugriff: Der PHP-Prozess (Webserver-Benutzer) benötigt Schreibrechte auf die persönliche Wortlistendatei sowie auf das übergeordnete Verzeichnis, damit pspell_save_wordlist funktioniert. Andernfalls schlägt das Speichern stillschweigend fehl oder gibt false zurück.
Deprecated: Ab PHP 8.1 werden Ressource-IDs durch das Objekt PSpell\Dictionary ersetzt. Code, der numerische Ressource-IDs erwartet, muss angepasst werden.
Erweiterung: Die pspell-Erweiterung ist in vielen Standard-PHP-Paketen nicht vorinstalliert. Prüfen Sie mit extension_loaded('pspell'), ob sie verfügbar ist. Für moderne Projekte kann die Bibliothek php-spellchecker eine portablere Alternative sein.