Hans: search/replace - aber wie?

Beitrag lesen

Hallo Theresa,

Die Datei theresa_input.txt sieht so aus:

../bilder/21312312_gans.jpg
../bilder/9821374_henne.jpg

Die Datei theresa.pl sieht so aus:

#!/usr/bin/perl

$file = './theresa_input.txt';  # Name the file

open(INFO, $file);
my @lines = <INFO>;
close(INFO);

foreach (@lines) {
   chomp;
   s/^../bilder/[0-9]*_/http://www.domain.de/bilder//;
   print "$_\n";
}

Also, zuerst werden alle Zeilen von theresa_input.txt eingelesen und im Array @lines abgelegt. Danach läuft man durch das array, wobei die aktuelle Zeile in der Variable $_ abgelegt ist. Das störende Leerzeichen wird durch dam chomp-Kommand weggemacht.

Und das Suchen&Ersetzen macht:

^..  -> Escapen von "."
/bilder/ -> Escapen von "/"
[0-9]* -> mindestens ein Zeichen aus der Menge 0...9

Suche nach allem, was mit "../bilder/mindestens_einmal_0_bis_9_gefolgt_von_unterstrich und ersetze dies durch

http://www.domain.de/bilder. Alles was nach dem Unterstrich im Such-Teil kommt, lasse unverändert.

Die Punkte und die "/" müssen beim URL aus wieder escaped werden.

Und mit print wird das veränderte $_ wieder ausgegeben.

Das Ganze ist ein perl-Skript. Aber da Perl und PHP verwandt ist, müßte es funktionieren. Ggf. anpassen. Aber Hauptsache, Du hast das Prinzip verstanden.

Gruß

Hans