Seite 1 von 1

Simple Methode um Beitragslänge zu bestimmen?

Verfasst: 04.10.2008 01:53
von Seether
Gibt es eine simple Methode um die effektive Länge eines Beitrags wenigstens nährungsweise bestimmen zu können?

Also was ich bezwecken will:
Alles zwischen

Code: Alles auswählen

 [quote] und [/quote]
soll nicht mit gezählt werden, der Rest ist egal, also Smilies, BBCode etc...

Klappt wohl nur über Reguläre Ausdrücke, oder?

Ist das eine aufwändige Sache oder mit einem einfache Ausdruck möglich?

S.

Verfasst: 04.10.2008 02:35
von gn#36
Wenn du alle Zitate rauslassen willst dann geht das auf jeden Fall nur mit regulären Ausdrücken und auch nicht so sonderlich einfach. Zitate lassen sich ja beliebig verschachteln und diese Verschachtelungen lassen sich auch mit Regulären Ausdrücken nur mit Hilfe von Schleifen erfassen.

Ich probier mal dir einen Ansatz zu geben. Einen sehr guten Start liefert dir die includes/bbcode.php von phpBB 2 (ich finde die einfacher zu verstehen als das Expemplar von phpBB 3, auch wenn das gleiche da natürlich auch gemacht wird).

Generell könntest du mittels [php:preg_replace] Dinge in deinem Text ersetzen. Wenn du das schon mal mit den ganzen "standard" Tags machst ([color] usw.) dann hast du diesen Ballast, der ja eigentlich nicht mitgezählt werden sollte schon mal raus.
Da du alle Quotes entfernen willst (also nicht mitzählen) könnte man es mit so einem Suchmuster versuchen:

Code: Alles auswählen

#\[quote(=".*?")?\].*?\[/quote\]#is
Dieses musst du so lange mehrfach über den Post laufen lassen und entfernen, bis sich der Text nicht mehr ändert (nur so kannst du beliebige Verschachtelungen abfangen, einmal drüber laufen lassen entfernt nur die oberste Schicht).

Danach musst du dann nur noch Buchstaben oder Wörter zählen (je nach dem was du haben willst).

Wenn die Posts direkt aus der Datenbank kommen, dann muss in die BBcodes noch die bbcode_uid rein, i.a. per Doppelpunkt hinten im Tag drin (z.b. [b:e3992af]) (KB:bbcode_uid).

Verfasst: 04.10.2008 13:49
von Seether
gn#36 hat geschrieben: Wenn die Posts direkt aus der Datenbank kommen, dann muss in die BBcodes noch die bbcode_uid rein, i.a. per Doppelpunkt hinten im Tag drin (z.b. [b:e3992af]) (KB:bbcode_uid).
Verstehe ich nicht so ganz... Man kann doch einfach alles löschen also den

Code: Alles auswählen

[quote]-Tag inklusive uid 
... oder nicht?

Verfasst: 04.10.2008 17:46
von gn#36
Nur wirst du in der Datenbank nur dann [quote] finden, wenn du beim tippen des Posts ein [/quote] vergessen hast. Die stehen in der Datenbank mit [quote:ef392ab1] oder etwas ähnlichem drin, wobei ef392ab1 die bbCode UID ist.

Also musst du beim ersetzen für das zählen logischerweise die bbcode UID mit suchen sonst wirst du keinen einzigen der gewünschten Tags ersetzen und zählst die Zitate grundsätzlich immer mit.

Verfasst: 06.10.2008 10:25
von Seether
Ja das ist mir bewusst, aber ich dachte man könnte auch so suchen:

Code: Alles auswählen

[quote: * ][/quote]
Müsste doch gehen mit regulären Ausdrücken?

Verfasst: 06.10.2008 15:03
von gn#36
Jo geht theoretisch auch. Aber nicht mit dem Stern.

Code: Alles auswählen

#\[quote(=".*?")?(:[a-f0-9]*)\].*?\[/quote(:[a-f0-9]*)\]#is