Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Text an der letzten Wortgrenze abschneiden (RegExp)

Hallo zusammen,

Folgende Funktion, reduziert einen Text mit mehr als 350 Zeichen auf 350 Zeichen. Da der Text allerdings auch BBCode enthält, also z.B. [ul] test [/ul] kann eben folgendes passieren:

....
elen Jahren. Einsatz

* bla
* test1
[/ul...

Es wird also die eckige Klammer von ul weggeschnitten. Wie kann ich in meiner RegExp diesen Sonderfall berücksichtigen? Dies gilt auch für und und

Code:                   In Zwischenablage kopieren (nur IE)
1">

Hier gehts zum Orginal Eintrag "Text an der letzten Wortgrenze abschneiden (RegExp)" im Forum

Antworten

sowas ist nicht ganz trivial zu lösen, wenn du xhtml-konformen code erhalten möchtest.

das problem, das du angesprochen hast, tritt ja nur auf, weil du auch die bb-code formatierungsbefehle mitzählst. lass das doch einfach, die sind für die spätere darstellung eh nicht interessant. stell dir einen text vor, der nur aus bb-code formatierungen besteht, aber keinen text hat (wird in wirklichkeit so nie vorkommen, nur zur veranschaulichung). der würde nach 350 bb-code zeichen abgebrochen werden, der benutzer hätte dadurch aber keine informationen.

möglichkeit1: schmeiss alle formatierungen raus und zähle dann deine zeichen ab. suche dann nach der nächstliegenden wortgrenze. merk dir die stelle und finde diese in deinem formatierten text wieder. führ den bb-code parser aus und ergänze fehlende schließende tags.

möglichkeit2: führe den bb-code parser aus und übertrage den xhtml-code in eine xml-repräsentanz. zähle cdata-zeichen bis zu der stelle, an der du abbrechen möchtest. suche die nächste wortgrenze. lösche alle nachfolgenden zeichen bis zum schließenden tag. lösche alle nachfolgenden elemente samt inhalt bis auf schließende tags.

möglichkeit3: verzichte in reklame-kurztexten auf formatierung. das macht die sache doch viel einfacher :-)

das waren nur so meine spontanen ideen. die müssen nicht perfekt oder vollständig sein.


Hier gehts zum Orginal Eintrag "Text an der letzten Wortgrenze abschneiden (RegExp)" im Forum
 
phpforum.de | Impressum