Hi Leuts,
brauch Eure Hilfe: In einem Perlscript muss ich verschiedene Zeichen innerhalb von URLs (?, &, ~) durch einen Bindestrich ersetzen bevor diese an URLs ausgegeben werden. Ansosnten funzt der Skript 1A. Hat wer nen Tipp...?
Vielen Dank
Ullzn
Homepage selbermachen 7.852 Themen, 35.619 Beiträge
meinst du die übergabe per post oder get methode?
Hi,
ist ein ganz normales script, das auf unix-ebene (i.d.r. über cornjob) gestartet wird.
Ullzn
was spricht gegen preg_replace?
sorry, die Funktion kenn ich nicht
Sorry, ich glaub ich sollte das problem detaillierter darstellen:
Also... ich muss Datenbankeinträge u.a. unter Zuhilfenahme von Perl in HTML-Dateien ausgeben. Das Problem ist: Aus diesen HTML-Dateien sollen (via cgi) Zusatzinformationen zu den Einträgen - wiederum in HTML - aufrufbar sein. Das Aufrufen dieser Zusatzinformationen erfolgt wiederum durch eine cgi-Übergabe der URL. Problematisch wirds, wenn die URL eines der Zeichen "&, ?, ~" enthält. Diese Zeichen muss ich durch "-" esetzen.
Das funktioniert normaerweise in Perl durch:
$a = "http://members.tripod.com/~dazc?-&/&?~biblio.htm";
print "$a\n";
$a =~ tr/&?~/---/;
print "$a\n";
Innerhalb der Scripts, das die erste HTML-Seite erzeugt funzt das aber nun nicht so recht: der entsprechende Ausschnitt des Script sieht so aus:
elsif ($stuck =~ m/#FIURVT/)
{
$stuck =~ s/#FIURVT/$felderhash{"..FIUR"}/;
if ($felderhash{"..FIUR"} =~ m/.+/){print HTML $stuck;}
}
mein Problem: Wie und wo (vermutlich vor "Print") ersetzte ich die Zeichen?
Danke für eure Hilfe
Ullzn
leider kenne ich die perlbefehle nicht genau, nur in php, aber preg_replace gibt es so oder ähnlich meines wissens auch in perl.
du mußt zwei arrays konfigurieren, eins mit den ausgrücken, die ersetzt werden sollen $such und eins mit den ausdrücken, durch die sie ersetzt werden $ersatz (ich beziehe mich auf php, sollte aber in perl ähnlich funktionieren).
dann definierst du dein
$a=preg_replace($such, $ersatz, $a);