#!/usr/bin/perl use strict; use warnings; sub parse { my %params = @_; # my @l=@_; print join('|',@l)."\n----\n"; print "$_ = ".$params{$_}."\n" for keys %params; print "#####\n"; if(exists($params{BILD})) { return ''; } elsif(exists($params{LINK})) { return ''.$params{INHALT}.''; } elsif(exists($params{ZITAT})) { return '
'.$params{INHALT}.'
'; } elsif(exists($params{HEADLINE})) { return ''.$params{INHALT}.''; } else { return "!!Unbekannter Befehl!!"} } sub rsplit { my @v=@_; # print join('|',@v),"\n"; return ($v[2]!~/=/?($v[1],''):(),$v[4]?('INHALT',$v[4]):(),$v[3]?(map{split(/\s+(?=\w+$)/,$_)}split(/\s*=\s*/,$v[2]=~/=/?$v[0]:$v[3])):()); } my $string = ' Das ist Martin: [LINK="http://www.test.de" TARGET=_blank]klick hier[/LINK] Sein Bild: [BILD=martin.gif NAME="asd ass as" NAME2=hallo] Das ist Bärbel: [LINK="http://www.test.de" TARGET=_blank]klick hier[/LINK] Ihr Bild: [BILD=baerbel.gif NAME="asd ass as" NAME2=hallo] [ZITAT]Dies ist ein Zitat[/ZITAT] oder: [HEADLINE]Dies ist eine Überschrift[/HEADLINE] [HEADLINE SIZE=3]text[/HEADLINE] '; print $string."\n#####\n"; $string =~ s|\[((\w+)(\s*=?s*)(.*?))\](?:(.+?)\[/\2\])?|parse(rsplit($1,$2,$3,$4,$5?$5:''))|gse; print $string."\n";