Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]10605[/thread]

Smilies suchen und ersetzen



<< >> 6 Einträge, 1 Seite
Ronnie
 2007-10-17 21:00
#100991 #100991
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Im Moment stehe ich ein wenig auf der Leitung. Ich möchte in Texten Smilies durch entsprechende Bilder ersetzen, schieße mir aber irgendwie mit dem (nicht vorhandenen Escaping in den Fuss):
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package Smiley;

    my %smilies = ( 
        # ':)' => 'smile.gif', 
        # ';)' => 'wink.gif', 
        ':rolleyes:' => 'biggrin.gif' 
    );

    sub ascii_to_img {
        my $text = shift;
        for (keys %smilies) { 
            $text =~ s/$_/<img src=\"smile\/$smilies{$_}\" \/>/g;
        };
        return $text;
    }

1;

Ich bekomme folgende Fehlermeldung:
Quote
Unmatched ) in regex; marked by <-- HERE in m/;) <-- HERE

Ist bestimmt trivial zu lösen, aber ich komme im Moment nicht darauf wie das escaping aussehen müsste?!
pq
 2007-10-17 21:04
#100992 #100992
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
\Q$_\E
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
Ronnie
 2007-10-17 21:11
#100993 #100993
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Super, danke! Heute ist wieder so ein "vor lauter Bäume den Wald nicht sehen" Tag.
Struppi
 2007-10-18 02:32
#100996 #100996
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
und noch schöner, da ohne Schleife:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
my %smilies = (
         # ':)' => 'smile.gif', 
         # ';)' => 'wink.gif', 
         ':rolleyes:' => 'biggrin.gif' 
);

my $pattern = join '|', map quotemeta, keys %smilies;

sub ascii_to_img {
        my $text = shift || return '';
       $text =~ s/($pattern)/<img alt="$1" src="$smilies{$1}">/g;
        return $text;
}

(nicht von mir, vor Jahren in einer Perl NG entdeckt)
Ronnie
 2007-10-18 02:59
#100997 #100997
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Hey, das ist wirklich ne gute Idee. Sehr schick!

Danke,
Ronnie
pq
 2007-10-18 13:05
#101003 #101003
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
naja, spätestens dann, wenn sich die patterns überschneiden können, braucht man
sowas ja eh. bei html-entities (> => &gt; und & => &amp;) kommt man mit einer schleife nicht weit.

in bestimmten fäellen muss man sogar die keys nach länge sortieren, z.b. wenn zwei
verschiedene smileys mit denselben zeichen anfangen.
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
<< >> 6 Einträge, 1 Seite



View all threads created 2007-10-17 21:00.