Start · Sprachen · PHP · Referenz · pspell_save_wordlist

pspell_save_wordlist

Funktion

Speichert die persönliche Wortliste der aktuellen <code>pspell</code>-Sitzung dauerhaft in einer Datei.

seit PHP 4.0.2 Kategorie: string

Signatur

pspell_save_wordlist(PSpell\Dictionary $dictionary): bool

Beschreibung

pspell_save_wordlist() schreibt alle Wörter, die während einer Rechtschreibprüfungs-Sitzung mit pspell_add_to_personal() zur persönlichen Wortliste hinzugefügt wurden, in die zugehörige Datei auf dem Datenträger. Ohne diesen Aufruf gehen neu hinzugefügte Wörter nach dem Sitzungsende verloren.

Die Funktion wird typischerweise am Ende eines Skripts aufgerufen, nachdem der Nutzer eigene Wörter (z. B. Eigennamen oder Fachbegriffe) hinzugefügt hat. So stehen diese Wörter bei zukünftigen Sitzungen wieder zur Verfügung und werden nicht erneut als Fehler markiert.

Damit die Funktion erfolgreich arbeiten kann, muss beim Öffnen der Sitzung über pspell_new_config() in Kombination mit pspell_config_personal() eine persönliche Wortlisten-Datei angegeben worden sein. Ohne eine solche Konfiguration hat die Funktion keinen Effekt.

Ab PHP 8.1 wird das alte int-Handle durch ein typsicheres PSpell\Dictionary-Objekt ersetzt, was die Verwendung robuster und klarer macht.

Parameter

Name Typ Default Beschreibung
$dictionary Pflicht PSpell\Dictionary Das Wörterbuch-Handle, das von pspell_new(), pspell_new_config() oder pspell_new_personal() zurückgegeben wurde. Ab PHP 8.1 ist dies ein PSpell\Dictionary-Objekt, zuvor ein int.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die persönliche Wortliste erfolgreich gespeichert wurde, andernfalls false.

Beispiele

Persönliche Wortliste speichern

<?php
// Konfiguration erstellen und persönliche Wortlisten-Datei festlegen
$config = pspell_config_create('de');
pspell_config_personal($config, '/var/www/data/my_wordlist.pws');

// Sitzung mit dieser Konfiguration öffnen
$dictionary = pspell_new_config($config);

// Eigene Wörter hinzufügen (z. B. Fachbegriffe oder Eigennamen)
pspell_add_to_personal($dictionary, 'Symfony');
pspell_add_to_personal($dictionary, 'Laravel');
pspell_add_to_personal($dictionary, 'Composer');

// Wörter auf dem Datenträger speichern
if (pspell_save_wordlist($dictionary)) {
    echo "Persönliche Wortliste erfolgreich gespeichert.";
} else {
    echo "Fehler beim Speichern der Wortliste.";
}
?>
Persönliche Wortliste erfolgreich gespeichert.

Rechtschreibprüfung mit persönlicher Wortliste und anschließendem Speichern

<?php
$config = pspell_config_create('de');
pspell_config_personal($config, '/var/www/data/custom_words.pws');
$dictionary = pspell_new_config($config);

$words = ['Kubernetes', 'Docker', 'Microservice'];

foreach ($words as $word) {
    if (!pspell_check($dictionary, $word)) {
        // Unbekanntes Wort zur persönlichen Liste hinzufügen
        pspell_add_to_personal($dictionary, $word);
        echo "'{$word}' wurde zur persönlichen Wortliste hinzugefügt.\n";
    } else {
        echo "'{$word}' ist bereits bekannt.\n";
    }
}

// Alle neuen Einträge dauerhaft speichern
pspell_save_wordlist($dictionary);
echo "Wortliste gespeichert.";
?>
'Kubernetes' wurde zur persönlichen Wortliste hinzugefügt. 'Docker' wurde zur persönlichen Wortliste hinzugefügt. 'Microservice' wurde zur persönlichen Wortliste hinzugefügt. Wortliste gespeichert.

// Wichtig · Fallstricke

Dateiberechtigung: Der PHP-Prozess benötigt Schreibrechte auf die in pspell_config_personal() angegebene Datei sowie auf das übergeordnete Verzeichnis. Andernfalls schlägt das Speichern still fehl oder gibt false zurück.

Abhängigkeit von pspell_config_personal: Wurde keine persönliche Wortlisten-Datei konfiguriert, hat pspell_save_wordlist() keinen Effekt. In diesem Fall sollte stattdessen pspell_config_personal() vor dem Öffnen der Sitzung aufgerufen werden.

Deprecation-Hinweis: Die pspell-Erweiterung ist seit PHP 8.0 als veraltet markiert und könnte in zukünftigen Versionen entfernt werden. Für neue Projekte empfiehlt sich der Einsatz moderner Rechtschreibprüfungs-Bibliotheken.

PHP 8.1: Das Handle-Argument wurde vom Typ int auf PSpell\Dictionary geändert. Älterer Code, der ein int-Handle übergibt, erzeugt einen Typfehler.