Start · Sprachen · PHP · Referenz · enchant_broker_set_dict_path

enchant_broker_set_dict_path

Funktion

Setzt den Verzeichnispfad, in dem ein bestimmtes Enchant-Backend nach Wörterbuchdateien sucht.

seit PHP 5.3.0 Kategorie: string

Signatur

enchant_broker_set_dict_path(EnchantBroker $broker, int $dict_type, string $value): bool

Beschreibung

enchant_broker_set_dict_path legt das Verzeichnis fest, das ein bestimmtes Enchant-Backend (z. B. Myspell oder Ispell) beim Laden von Wörterbüchern durchsucht. Damit kann die Anwendung eigene oder projektspezifische Wörterbuchpfade außerhalb der Systemstandards verwenden.

Der Parameter dict_type bestimmt, welches Backend konfiguriert werden soll. Gültige Werte sind die Konstanten ENCHANT_MYSPELL und ENCHANT_ISPELL. Der Pfad muss auf ein existierendes, lesbares Verzeichnis verweisen, das die Wörterbuchdateien des jeweiligen Backends enthält.

Diese Funktion ist besonders nützlich, wenn Wörterbücher nicht am systemweiten Standardort installiert sind – etwa in containerisierten Umgebungen, bei Shared-Hosting-Setups oder wenn benutzerdefinierte Fachvokabular-Wörterbücher eingebunden werden sollen.

Hinweis: Ab PHP 8.0 wird anstelle einer Ressource ein EnchantBroker-Objekt verwendet. Die Funktion gibt true bei Erfolg zurück, andernfalls false.

Parameter

Name Typ Default Beschreibung
$broker Pflicht EnchantBroker Eine EnchantBroker-Instanz, die zuvor mit enchant_broker_init() erstellt wurde.
$dict_type Pflicht int Der Backend-Typ, für den der Pfad gesetzt werden soll. Gültige Werte sind ENCHANT_MYSPELL und ENCHANT_ISPELL.
$value Pflicht string Der vollständige Dateisystempfad zum Verzeichnis, das die Wörterbuchdateien des gewählten Backends enthält.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Pfad erfolgreich gesetzt wurde, andernfalls false.

Beispiele

Eigenen Myspell-Wörterbuchpfad setzen

<?php
// Broker initialisieren
$broker = enchant_broker_init();

// Benutzerdefiniertes Myspell-Verzeichnis setzen
$dictPath = '/var/www/app/dicts/myspell';

if (enchant_broker_set_dict_path($broker, ENCHANT_MYSPELL, $dictPath)) {
    echo "Wörterbuchpfad erfolgreich gesetzt.\n";

    // Wörterbuch für Deutsch laden
    if (enchant_broker_dict_exists($broker, 'de_DE')) {
        $dict = enchant_broker_request_dict($broker, 'de_DE');
        echo "Wörterbuch 'de_DE' geladen.\n";
        enchant_broker_free_dict($dict);
    } else {
        echo "Kein Wörterbuch für 'de_DE' gefunden.\n";
    }
} else {
    echo "Fehler beim Setzen des Wörterbuchpfads.\n";
}

enchant_broker_free($broker);
Wörterbuchpfad erfolgreich gesetzt. Wörterbuch 'de_DE' geladen.

Ispell-Pfad für fachspezifisches Vokabular konfigurieren

<?php
$broker = enchant_broker_init();

// Pfad für Ispell-Backend mit medizinischen Fachbegriffen
$customPath = '/opt/dicts/medical/ispell';

$result = enchant_broker_set_dict_path($broker, ENCHANT_ISPELL, $customPath);

if ($result) {
    echo "Ispell-Pfad auf '{$customPath}' gesetzt.\n";

    $availableDicts = enchant_broker_list_dicts($broker);
    echo "Verfügbare Wörterbücher:\n";
    foreach ($availableDicts as $dict) {
        echo ' - ' . $dict['lang_tag'] . "\n";
    }
} else {
    echo "Fehler: Pfad konnte nicht gesetzt werden.\n";
}

enchant_broker_free($broker);
Ispell-Pfad auf '/opt/dicts/medical/ispell' gesetzt. Verfügbare Wörterbücher: - en_US - de_DE

// Wichtig · Fallstricke

Versionswechsel: Vor PHP 8.0 wurde der $broker-Parameter als Ressource (resource) übergeben. Ab PHP 8.0 wird stattdessen ein EnchantBroker-Objekt erwartet.

Verfügbarkeit: Diese Funktion ist nur für die Backends ENCHANT_MYSPELL und ENCHANT_ISPELL definiert. Andere Backends (z. B. Hunspell) unterstützen diese Pfadkonfiguration möglicherweise nicht über diese Funktion.

Sicherheitshinweis: Wenn der Pfad aus Benutzereingaben stammt, muss er sorgfältig validiert und bereinigt werden, um Path-Traversal-Angriffe zu verhindern. Verwenden Sie realpath() und prüfen Sie, ob der Pfad innerhalb eines erlaubten Basisverzeichnisses liegt.