Schrift
[thread]10467[/thread]

RegEx: optionale Matches an Subroutine weitergeben (Seite 3)

Leser: 1


<< |< 1 2 3 4 >| >> 32 Einträge, 4 Seiten
topeg
 2007-09-29 02:01
#100156 #100156
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Habe schon eine Idee woran es liegen könnte. Aber Morgen mehr.
topeg
 2007-09-29 02:13
#100157 #100157
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Fehler gefunden. War doch einfacher als gedacht.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/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 '<img src='.$params{BILD}.'>'; }
elsif(exists($params{LINK}))
{ return '<a href='.$params{LINK}.'>'.$params{INHALT}.'</a>'; }
elsif(exists($params{ZITAT}))
{ return '<pre>'.$params{INHALT}.'</pre>'; }
elsif(exists($params{HEADLINE}))
{ return '<h>'.$params{INHALT}.'</h>'; }
else
{ return "!!Unbekannter Befehl!!"}
}

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($5?('INHALT',$5):(),$3 ne '='?($2,''):(),$4?(map{split(/\s+(?=\w+$)/,$_)}split(/\s*=\s*/,$3 eq '='?$1:$4)):())|gse;

print $string."\n";

die Variablen $1 usw. werden verändert/gelöscht, wenn man im Ersetzungsstring mit evaluiertem Perl Regexp benutzt. (Ich haben in $3 nach "=" mit einem Regexp gesucht.) Dummer Fehler.
Froschpopo
 2007-10-05 16:10
#100358 #100358
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Wunderbar, klappt prima! Danke!

leider leider habe ich wieder ein Problem:
Man kann leider keine Tags ineinander verschachteln:
Code: (dl )
[LINK=http://...]dieser Link ist [FETT]wichtig![/FETT][/LINK]
renee
 2007-10-05 16:15
#100361 #100361
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
*hust* BBCode *hust*
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Froschpopo
 2007-10-05 16:26
#100363 #100363
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
nein, etwas mehr als das, weil bbcode fast nie z.b. title-tags unerstützt.
Ich möchte u.a. auch sowas hier machen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
[ZITAT]Also sprach zaratustra[/ZITAT]
<div class="zitat">...</div>


ODER-

[BILD=file.gif ALT="ein text" FORMAT=PRINT]

ODER-
[BILD=file.gif ALT="blabl" POSITION="rechtsoben" FORMAT=XML]


sowas geht bei BBCode meistens nicht weil es etwas mehr als nur die 1:1-Übersetzung nach HTML ist. Ich verwende dieses Prinzip teilweise auch in einer Tk-Oberfläche!
gegen ein fertiges Modul ist auch nichts einzuwenden, aber ich muss halt die tags selbstgestalten können da ich deutsche tags haben möchte.
Froschpopo
 2007-10-06 16:07
#100396 #100396
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
mal ne ganz doofe Frage: könnte man hierfür nicht irgendeinen Trick mit HTML::Parser versuchen?
Also quasi, dass HTML::Parser alle [] Tags parst, dann wären doch theoretisch sämtliche Probleme gelöst oder nicht?
ptk
 2007-10-06 16:28
#100398 #100398
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Klar kann man, aber dazu musst du HTML::Parser patchen. Genau genommen müsstest du alle Vorkommen von '<' und '>' in hparser.c ersetzen.
Froschpopo
 2007-10-06 17:03
#100402 #100402
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
und wenn ich die < und > einfach beibehalte, aber die Tags ändere:

<BILD=img.gif>
<LINK=http:///...>linktext</LINK>

usw.
wäre das sehr schwierig durch Code zu ersetzen?
ptk
 2007-10-06 18:25
#100407 #100407
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Dann nimm doch gleich HTML.
Froschpopo
 2007-10-06 19:14
#100414 #100414
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Mein Vater besteht auf deutsche Tags a la <BILD=img.gif>

Ich habe auch mittlerweile selbst mal versucht ein bisschen zu experimentieren:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl

use strict;

my $str = "wir sehen hier <b>fette Text</b>";

print parser($str);

sub parser {
my $data = shift;

my %html_tags = (
fett => "<b>%s</b>",
kursiv => "<i>%s</b>",
zitat => "<blockquote>%s</blockquote>",
link => "<a href="%s">%s</a>",
bild => "<img src="%s">"
);

return;
}

Ich habe hierfür das Modul auf http://search.cpan.org/src/BLOM/HTML-BBCode-1.06/l... zum Vorbild genommen. Ich bin aber durch die vielen end_tag, start_tag, self usw. total verwirrt und brauche irgendwie einen Ansatzpunkt was nun weiter zu tun ist.
<< |< 1 2 3 4 >| >> 32 Einträge, 4 Seiten



View all threads created 2007-09-25 23:57.