Thread CMS Tags parsen (29 answers)
Opened by cbxk1xg at 2010-11-26 16:27

pq
 2010-11-27 17:48
#143128 #143128
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
2010-11-27T16:33:28 cbxk1xg
Mit dieser RegEx wird nach einem Wort oder dem anderen Wort gesucht, eine Backreferenz gebildet und der String inkl. dem = ersetzt. Richtig?
Code: (dl )
$text =~ s/^\[(pic|audio|infobox)=//;

genau, ich suche nach einem tag-anfang. dieses hat aber dann ja noch einen wert, den ich attribut nenne.

Quote
Mit dieser RegEx guckst Du nach einer möglichen Verschachtelung, die auch mehrmals vorkommen kann. Außerdem erzeugst Du eine Backreferenz die später $attr getauft wird. Richtig?
Code: (dl )
$text =~ s/^([^\[\]]+)//;

ich suche hier nach dem attribut, dass laut deiner definition (so wie ich es verstanden habe), bis zum nächsten tag gehen kann.
zumindest hast du nicht gesagt, womit ein attribut begrenzt wird.
Code: (dl )
1
2
3
[infobox=Titel#Etwas Text
[pic=Pfad/bild.jpg#310#left#meta]
Mehr Text]

in diesem beispiel wäre das attribut von infobox "Titel#Etwas Text".
wenn du sagst, dass ein attribut durch "#" begrenzt wird, kannst du die regex danach anpassen. dann wäre aber das andere beispiel falsch:
Code: (dl )
[pic=Pfad/bild.jpg#310#left#meta]

denn hier geht das attribut bis einschliesslich "meta".
wenn es vom tagnamen abhängt, wie das attribut begrenzt wird, musst du die regex davon abhängig machen.
Quote
Dann nimmst Du alles und packst es wieder in den stack, damit es erneut mit der ersten RexEx bearbeitet wird.

wenn ein öffnendes tag gefunden wird, wird es auf den stack gepackt. so werden beliebi verschachtelungen erlaubt. dann matche ich das attribut. dann kann entweder text oder ein weiteres tag kommen, oder die schliessende klammer.
in letzterem fall nehme ich das oberste tag vom stack, da es hiermit abgeschlossen ist.
Quote
Das verstehe ich soweit alles. Aber was mache ich mit $attr in der render sub?

weiss ich nicht. du hast ja keine definition dafür geliefert, wie der text nachher aussehen soll. ich sehe nur die tags und verarbeite sie.

ich sag immer, die genaue spezifikation ist die halbe miete.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread CMS Tags parsen