Brauche Hilfe bei RegEx
myMojito
- perl
Hallo SelfForum,
schön das ihr wieder da seid ;-)
ich muss in ein bestehendes JavaScript-Menü die einzelnen Menü-Elemente nun dynamisch aus einer Datenbank füttern.
Jetzt habe ich das Problem, das ich für eine Zeile in diesem Menü nur 30 Zeichen Platz habe, dannach muss ich einen HTML-Zeilenumbruch manuell einfügen und den Raum der Menüzeile erweitern. Meine Lösung wäre folgende:
Wenn eine Menü-Zeile mehr als 30 Zeichen hat, ersetze ich das letzte Leerzeichen vor der 30er-Grenze durch einen <br>-Tag. Eventuell mache ich das Ganze nochmals bei der 60er-Grenze (wobei dieses Zeichen-Grenze je nach ersten Zeilenumbruch varieren kann). Ich zähle jeden Zeilenumbruch mit, und kann die höhe der Menü-Zeile ermitteln.
Mir fehlt jetzt nur die Umsetzung in Perl-Code. Kann mir da jemand auf die Sprünge helfen?
greets
myMojito
Hallo,
schön das ihr wieder da seid ;-)
ACK
[Text-Wrapper]
Ich glaube mit einem regulären Ausdruck wie in s/([\w \t]){0,30} /$1\n/g; ist es imho nicht getan, weil damit andere "ungeahnte" Probleme auftreten (z.B.: letzte Zeile). Nach einem besseren Ausdruck habe ich auch nicht weiter gesucht.
Die zweite Möglichkeit besteht darin, Deinen Text an Leerzeichen zu split()en und die Bruchstücke anschließend wieder zu Teilen kleinergleich 30 Zeichen zu verknüpfen.
Am besten aber ist sicherlich Text::Wrap zu verwenden. Du musst nur hinterher die Umbrüche (bzw. den Wert aus $Text::Wrap::separator) zählen, um auf die Zeilenzahl zu kommen.
Gruß Alex
Hallo Alex,
Die zweite Möglichkeit besteht darin, Deinen Text an Leerzeichen zu split()en und die Bruchstücke anschließend wieder zu Teilen kleinergleich 30 Zeichen zu verknüpfen.
Die Lösung gefällt mir, danke für den Tipp ;-)
Am besten aber ist sicherlich Text::Wrap zu verwenden. Du musst nur hinterher die Umbrüche (bzw. den Wert aus $Text::Wrap::separator) zählen, um auf die Zeilenzahl zu kommen.
Ich werde mir mal das Modul Text::Wrap näher anschauen.
greets
myMojito