RegEx -> eigenen "Tag" auswerten
21.de
- perl
0 Helmut Weber0 21.de
0 Struppi
Hallo Freunde,
es ist eigentlich nicht meine Art, als Entwickler andere Kollegen zu befragen wenn ich nicht selbst zumindest ein paar Stunden investigativ tätig geworden bin - aber die Zeit drängt, ich stehe unter Stress, und da bin ich dankbar für jede Hilfe... ;-)
Ich benötige wirklich DRINGEND eine kleine Lösung zu folgender Anfoderung:
Ich habe folgende Tags in einem HTML-Snippet:
<!--FUNC:ADVIEW>anything<!--/FUNC:ADVIEW-->
Ich möchte nun "anything" in einer eigenen Variable haben, und dann den kompletten Bereich von <!-- bis zum zweiten --> gegen einen anderen String austauschen. Es gibt allerdings noch mehr eigene Tags, wie z.B. <!--DATA:USER-->, diese dürfen von dem Eingriff nicht berührt werden.
Ich will also nur den o.g. Bereich gegen einen neuen String austauschen, nachdem ich den umschlossenen Bereich ausgelesen habe...
Ich nehme mal an, das sich das mit einem schnuckligen regulären Ausdruck schnell erledigen läßt, bin aber leider kein geek auf diesem Gebiet, und würde für die Ausarbeitung wahrscheinlich zu lange brauchen - und aus terminlichen Gründen muß ich mein Script am Wochenende fertigstellen.
PLEASE HELP! Vielen lieben Dank schonmal im voraus!
Cheers!
Christian
Hallo Christian,
versuche mal folgendes Codebeispiel:
----------
my $html = 'Beliebiger anderer Text <!--FUNC:ADVIEW>anything<!--/FUNC:ADVIEW--> Beliebiger anderer Text';
my $ersetz = 'Hier stehe jetzt ich';
$html =~ s/<!--FUNC:ADVIEW>(.*?)<!--/FUNC:ADVIEW-->/$ersetz/g;
----------
Jetzt hast Du in der Variable $html den Bereich <!--FUNC:ADVIEW>anything<!--/FUNC:ADVIEW--> ersetzt durch deinen Ersetz-Text und in der Variablen $1 den Wert 'anything'.
Ich hoffe Dir dein Wochenende gerettet zu haben ;)
Gruß
Helmut Weber
Hi Helmut,
dein Vorschlag ist fantastisch! Allerdings fehlt noch eine winzige Änderung - mag sein das ich mich da nicht klar geäußert hatte:
Ich muß zuerst "anything" auslesen, und mit dem daraus erhaltenen Wert den neuen String generieren. "anything" wird ein keyword sein, auf dessen Basis der Invocation-Code eines Adserver generiert wird, der dann eingefügt werden soll.
Ich brauche also 2 Schritte...
Wäre supernett, wenn Du nochmal kurz helfen könntest. Die Rettung meines Wochenendes ist greifbar! ;-))
bye,
Christian
HTML-Text
my $html = 'Beliebiger anderer Text <!--FUNC:ADVIEW>anything<!--/FUNC:ADVIEW--> Beliebiger anderer Text';
Ersetz-Text
my $ersetz = 'Hier stehe jetzt ich';
HTML-Text bearbeiten
$html =~ s/<!--FUNC:ADVIEW>(.*?)<!--/FUNC:ADVIEW-->/$ersetz/g;
Hallo 21.de,
Ich muß zuerst "anything" auslesen, und mit dem daraus
erhaltenen Wert den neuen String generieren. "anything"
wird ein keyword sein, auf dessen Basis der
Invocation-Code eines Adserver generiert wird, der dann
eingefügt werden soll.
Er hat die Loesung doch gepostet:
Ersetz-Text
my $ersetz = 'Hier stehe jetzt ich';
HTML-Text bearbeiten
$html =~ s/<!--FUNC:ADVIEW>(.*?)<!--/FUNC:ADVIEW-->/$ersetz/g;
Du kannst problemlos einen e-Modifier anhaengen:
$html =~ s{<!--FUNC:ADVIEW-->(.*?)<!--/FUNC:ADVIEW-->}{
my $txt = $1;
if($txt eq 'anything') 'text';
else 'text1';
}esg;
Naehere Informationen gibts unter perldoc perlre. Die perldoc
ist auch im Inet verfuegbar: http://www.perldoc.com/.
Gruesse,
CK
Ich benötige wirklich DRINGEND eine kleine Lösung zu folgender Anfoderung:
Ich habe folgende Tags in einem HTML-Snippet:
<!--FUNC:ADVIEW>anything<!--/FUNC:ADVIEW-->
Es gibt eine Lösung, die heißt use HTML::Template. Ein Modul was diese Funktion und noch einiges mehr beinhaltet. Und eigentlich bei jeder aktuellen Perl Version beiliegt.
Struppi.