Modernes AddOn für REDAXO 5: Silbentrennung auf Basis von PHP 8.4+.
Das Addon verwendet die aktuelle org_heigl/hyphenator-Bibliothek (Version 3.1+) zusammen mit den neuen HTML5-DOM-Tools aus PHP 8.4 (Dom\HTMLDocument).
Im HTML-Modus werden nur Textknoten verarbeitet. Strukturell und semantisch sensible Bereiche (z. B. code, pre, script, style) bleiben unverändert. So bleibt das Markup intakt und die Ausgabe barriereärmer.
- DOM-basierte Verarbeitung statt Regex auf Roh-HTML: Attribute, Semantik und Struktur bleiben erhalten.
- Ausschluss sensibler Bereiche per Tag, Klasse, freiem CSS-Selektor und Element-Attribut (
data-hyphenator-ignore,data-hyphenator="off"). - Automatische Spracherkennung pro Element über
lang-Attribute im HTML-Baum. - Konfigurierbare Ausschlüsse im Backend verhindern Trennung in UI-, Code- oder Assistive-Text-Bereichen.
Code-Beispiele zur Verwendung innerhalb eines Modul-Outputs:
use FriendsOfRedaxo\Hyphenator\Hyphenator;
// Text (aktuelle Sprache):
echo Hyphenator::hyphenate('REX_VALUE[id=1]');
// Text (andere Sprache):
echo Hyphenator::hyphenate('REX_VALUE[id=1]', 'en');
// Markup:
echo Hyphenator::hyphenate('REX_VALUE[id=1 output=html]');
// Explizit HTML-Modus:
echo Hyphenator::hyphenateHtml('REX_VALUE[id=1 output=html]');
// Explizit Text-Modus:
echo Hyphenator::hyphenateText('REX_VALUE[id=1]');
// Textile im MarkItUp Editor:
$textile = rex_markitup::parseOutput('textile', 'REX_VALUE[id=1 output="html"]');
echo Hyphenator::hyphenate($textile);Ab Version 2 ist die primäre API namespaced:
use FriendsOfRedaxo\Hyphenator\Hyphenator;Die Sprache wird in dieser Reihenfolge bestimmt:
- Expliziter Parameter beim Aufruf (empfohlen, wenn eindeutig bekannt)
- Aktuelle REDAXO-Sprache (
rex_clang::getCurrent()->getCode()), wenn kein Parameter gesetzt ist - Im HTML-Modus pro Element über
lang-Attribute (überschreibt Sprache im jeweiligen Subtree)
Beispiele:
use FriendsOfRedaxo\Hyphenator\Hyphenator;
// 1) Explizit pro Aufruf
echo Hyphenator::hyphenate($text, 'de-DE');
// 2) Automatisch aus aktueller REDAXO-Sprache
echo Hyphenator::hyphenate($text);
// 3) Gemischte Sprache in HTML über lang-Attribute
$html = '<p lang="de-DE">Das ist ein deutscher Absatz.</p>'
. '<p lang="en-GB">This paragraph is in English.</p>';
echo Hyphenator::hyphenateHtml($html);Hinweise:
- Für gemischte Inhalte in einem HTML-Block immer
langan den betroffenen Elementen setzen. - Für reine Textstrings ohne HTML ist der Sprachparameter der robusteste Weg.
Standardmäßig verwendet das Addon das unsichtbare Soft-Hyphen ­ als Trennzeichen.
- Wenn das Feld
Trenn-Symbolin der Konfiguration leer bleibt, wird automatisch dieses Standardzeichen verwendet. - Für eine besser sichtbare Eingabe im Backend dürfen dort auch
­,­oder­eingetragen werden. Diese Werte werden intern automatisch auf das echte Soft-Hyphen-Zeichen normalisiert. - Wer bewusst ein sichtbares Trennzeichen möchte, kann stattdessen z. B.
-speichern.
- Globale Ausschlüsse über die Konfiguration (
Ausgeschlossene HTML-Tags,Ausgeschlossene CSS-Klassen) - Freie CSS-Selektoren über
Ausgeschlossene CSS-Selektoren(ein Selektor pro Zeile) - Pro Element über Attribut
data-hyphenator-ignore - Alternativ pro Element über
data-hyphenator="off" - Standardmäßig werden u. a.
code,pre,script,style,textarea,svgundmathausgelassen
Beispiele für Selektoren:
#main-nav.teaser aarticle p:not(.allow-hyphen)aside :is(a, button)
- Namespaced API:
FriendsOfRedaxo\Hyphenator\Hyphenator - HTML5-DOM-Verarbeitung über
Dom\HTMLDocument(PHP 8.4+) - Sprachableitung im DOM über
lang-Attribute je Element/Subtree - Locale-Normalisierung über
ext-intl(Locale::canonicalize,Locale::parseLocale) - Freie CSS-Selektor-Ausschlüsse inkl. ID-, Klassen- und Pseudo-Selektoren
- Erweiterte Ignore-Regeln pro Element über
data-hyphenator-ignoreunddata-hyphenator="off"
- Backend-Konfiguration gehärtet: CSRF-Token-Prüfung beim Speichern
- Konfigurationswerte werden serverseitig begrenzt (
leftMin1-10,rightMin1-10,wordMin2-50) - Legacy-Klasse
class.hyphenator.phpbleibt als Bridge auf die Namespaced-Class erhalten - Veraltete Hilfeseite
help.phpentfernt
- PHP >= 8.4
- ext-intl
- REDAXO >= 5.19.0
Dieses AddOn enthält keine vendorten Abhängigkeiten mehr. Die Bibliotheken werden per Composer installiert:
cd redaxo/src/addons/hyphenator
composer install --no-dev --optimize-autoloaderDie Datei CHANGELOG im Upstream-Paket kann veraltet wirken. Für den tatsächlichen Stand sind die Composer-Metadaten und die installierte Paketversion maßgeblich.

