Hallo,
ich habe in Perl eine Variable
$a = "Irgendein Text <LINK=linkname>Linktext</LINK> Resttext";
<LINK=linkname> sol ersetzt werden.
Dabei soll aus <LINK= <A HREF=" werden
und aus linkname die Url die in einer DB mit linkname verknüpft ist mit linkname angehängt (Wobei es eigendlich egal ist, wo der Link zu linkname herkommt).
Es muss also irgendwie linkname rausgefiltert werden und dann zurückgeschrieben werden.
linkname ist also z.B. www.domain.de/page/index.php?a=
Dann soll $a hinterher lauten
$a = "Irgendein Text <A HREF='http://www.domain.de/page/index.php?a=l ... inktext</A> Resttext";
Perl regex Problem - Gelöst
-
alexander newald
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
- Contact:
Perl regex Problem - Gelöst
Last edited by alexander newald on 2003-07-17 22:43, edited 1 time in total.
-
olaf.dietsche
- Posts: 401
- Joined: 2002-12-19 02:06
- Location: Siegburg
Re: Perl regex Problem
Ungetestet, aber so könnte es gehen:
Code: Select all
my %datenbank = (
linkname => 'www.domain.de/page/index.php?a='
);
$a = "Irgendein Text <LINK=linkname>Linktext</LINK> Resttext";
$a =~ m/<LINK=(.*?)>/;
my $href = $datenbank{$1};
$a =~ s/<LINK=/<A HREF=$href/;
$a =~ s/</LINK>/</A>/;-
alexander newald
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
- Contact:
Re: Perl regex Problem - Gelöst
Sieht schon fast gut aus. Ich wusste garnicht, dass sich $1 auch weiter ausserhalb der regex nutzen läßt.
#!/usr/bin/perl
$a = "Irgendein Text <LINK=linkname>Linktext</LINK> Resttext";
$b = "http://www.domain.de/page/index.php?a=";
$a =~ m/<LINK=(.*?)>/;
$a =~ s/<LINK=/<A HREF=$b/;
$a =~ s/</LINK>/</A>/;
print $a."n";
Code: Select all
Irgendein Text LINK>A HREF=http://www.domain.de/page/index.php?a=linkname>Linktext</LINK> Resttext-
alexander newald
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
- Contact:
Re: Perl regex Problem - Gelöst
Hallo, hier die Lösung:
Code: Select all
#!/usr/bin/perl
$a = "Irgendein Text <LINK=linkname>Linktext</LINK> Resttext";
$links{linkname} = "http://www.domain.de/page/index.php?a=";
$a =~ m/<LINK=(.*?)>/g;
$b = $links{$1}.$1."'";
$a =~ s/<LINK=$1/<A HREF="$b/g;
$a =~ s/</LINK>/</A>/g;
print $a."n";Re: Perl regex Problem - Gelöst
Hätte noch eine kürzere Lösung zu bieten:
Code: Select all
#!/usr/bin/perl
$a = "Irgendein Text <LINK=linkname>Linktext</LINK> Resttext";
$links{linkname} = "http://www.domain.de/page/index.php?a=";
$a =~ s/<LINK=([^>]*)>(.*)</LINK>/sprintf"<A HREF="$links{$1}$1">$2</A>"/ge;
print "$an";