User since
2003-08-15
2653
Artikel
BenutzerIn
ich hab nen Textstring:
$string ="text mit einigen :-) Smilies! ;-)";
jetzt wollte ich die Smilies durch Bilder ersetzen. Wie man Bilder einbindet weiss ist mir bereits bekannt.
Was würdet ihr für einen Alogarythmus nehmen um die Smilies aus dem String zu isolieren und anschließend wieder in der originalreihenfolge aneinanderzuhängen?
User since
2003-08-04
14371
Artikel
ModeratorIn
Wenn Du kurz sagst, wie man Bilder einbindet, dann wäre es für Tk-unwissende (wie mich) einfacher, Dir zu helfen...
mit s!!! würde es ungefähr so gehen:
my %hash = (':-)' => 'lachen.gif', ';-)' => 'zwinker.gif');
my $string = 'Dies;-) ist ein Test :-)';
$string =~ s!$_!<img src="./$hash{$_}">!g;
User since
2003-08-15
2653
Artikel
BenutzerIn
genau das funktioniert eben nicht, du kannst nicht einfach Bilder in ein Textlabel einbinden.
siehe perldoc Tk::Label. Du musst dann wenn schon ein Image-Label machen, aber man kann nicht beides in einem tun ! Ist alles nicht so einfach wie mit HTML... Aber darum gehts mir eigentlich garnicht, sondern eher darum wie man am besten die Smilies von Text isoliert und dabei die Reihenfolge einhält.
User since
2003-08-04
14371
Artikel
ModeratorIn
[quote=Froschpopo,11.04.2005, 23:35]genau das funktioniert eben nicht, du kannst nicht einfach Bilder in ein Textlabel einbinden.[/quote]
Deswegen habe ich Dich ja gefragt wie man das macht... Ich bin eben kein Tk-Freak...
Sowas hilft Dir vielleicht:
#! /usr/bin/perl
use strict;
use warnings;
my $string = 'Dies;-) ist ein Test :-)';
my @array = split(/([:;]-\))/,$string);
print $_,"\n" for(@array);
\n\n
<!--EDIT|renee|1113290007-->
User since
2003-08-15
2653
Artikel
BenutzerIn
danke das sieht schonmal sehr gut aus ! Aber was ist wenn ich 100 Smilies hab?
Kann man nicht irgendwie einen Hash durchsuchen nach smilies ?
User since
2003-08-04
14371
Artikel
ModeratorIn
Du kannst ja ein Array mit allen möglichen Smilies machen und dann per
Regexp::Assemble die richtige Regexp für
split finden!
User since
2003-08-15
2653
Artikel
BenutzerIn
ich bräuchte irgendwie sowas wie split(/exists($emotions{(.*)})/,$txt);... sowas in der art..
User since
2003-08-04
14371
Artikel
ModeratorIn
Wie gesagt, dafür kann man
Regexp::Assemble verwenden:
#! /usr/bin/env perl
use strict;
use warnings;
use lib qw(/homes/frasbio11/reneeb/cpan);
use Regexp::Assemble;
my @smilies = (':-)', ';-', ':-(');
my $ra = Regexp::Assemble->new();
$ra->add('^'.$_.'$') for(@smilies);
print $ra->re,"\n";
User since
2003-08-04
5246
Artikel
ModeratorIn
kannst du nicht Tk::Text dafuer verwenden? da kann man Tk::Photo's reinhaengen...
User since
2003-08-04
5872
Artikel
ModeratorIn
Genau, so mach ich das auch (ersetze auch Textsmilies durch grafische Darstellungen).
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite