Archiv verlassen und diese Seite im Standarddesign anzeigen : Newline Zeichen ersetzen
Hallo!
ICh benötige in einem kleinen Perl-Skript, dass bei der Ausgabe des Dateiinhalts sämtliche Newline Zeichen (also $/) übersetzt werden in HTML-Codes.
Das Problem ist jedoch, dass ich dabei wenn nur eins da ist es in ein "<br>" verwandlen muß, wenn jedoch zwei hintereinander folgen, ein "<p>" drauß werden soll.
Ciao,
Stefan Kiendl
Hallo!
Also wenn ich dich richtig verstanden habe und du die Quellen aus einer Datei einliest, könnte dir folgendes helfen:
$SrcFile = "meinedatei.txt";
$DstFile = "meinedatei.html";
open(SFILE, `< $SrcFile`);
@Text = `<`SFILE`>`;
close(SFILE);
open(DFILE, `> $DstFile`);
$TmpLine;
foreach $Line (@Text)
{
chomp($Line);
if ( length($TmpLine) && ! length($Line) )
{
print DFILE "`<`/p`>`\n";
}
elsif ( ! length($TmpLine) && length($Line) )
{
print DFILE "`<`p`>`\n";
}
if ( length($Line) )
{
print DFILE "$Line`<`br`>`\n";
}
$TmpLine = $Line;
}
close(DFILE);
Das ganze ist zwar ziemlich vereinfacht und man könnte es noch schöner und optimierter machen, aber es kommt wohl mit dem hin was du willst.
Gruß
Robert
P.S.
Vorsicht, an manchen Stellen kann der HTML-Filter hier zuschlagen!
Ist schwer hier Quellcode zu schreiben... http://www.linuxforen.de/ubb/wink.gif
[Diese Nachricht wurde geändert von robert (am 23 September 1999).]
Dufty II
24-09-1999, 02:09
> Ist schwer hier Quellcode zu schreiben
Mmmmh, vielleicht hilft der code-tag? http://www.linuxforen.de/ubb/wink.gif
$SrcFile = "meinedatei.txt";
$DstFile = "meinedatei.html";
open(SFILE, `< $SrcFile`);
@Text = `<`SFILE`>`;
close(SFILE);
open(DFILE, `> $DstFile`);
$TmpLine;
foreach $Line (@Text)
{
chomp($Line);
if ( length($TmpLine) && ! length($Line) )
{
print DFILE "`<`/p`>`\n";
}
elsif ( ! length($TmpLine) && length($Line) )
{
print DFILE "`<`p`>`\n";
}
if ( length($Line) )
{
print DFILE "$Line`<`br`>`\n";
}
$TmpLine = $Line;
}
close(DFILE);
Gruss,
Dufty II
Hilf mir leider nichts, ich bräuchte, dass das ganze über die Regulären Ausdrücke erst beim Ausgeben ersetzt wird.
Das ganze soll ein Archiv werden, bei dem allerdings keine HTML-Tags erlaubt sind.
Jedoch soll ein gewisse Formatierung möglich sein, was halt über einfache Zeilen- und Leerzeilenanordnung im Eintragsformular möglich sein soll.
Das blöde ist noch dazu, dass das ganze unter Linux und NT laufen soll, weshalb das "\r" noch zusätliche Probleme macht.
ciao
Stefan
Sorry, ich bin mir nicht ganz klar was du da willst!
Aber über reguläre Ausdrücke könntest du es z.B. so machen...
$Text ~= s/\n\n/'<'/p'>'/s;
$Text ~= s/\n/'<'br'>'/s;
Dann müßtest du natürlich noch prüfen wann ein `<`p`>` beginnt.
Gruß
Robert
P.S.
Dufty, das mit dem Code klappt auch nicht!
Hmm... mir ist noch was eingefallen < und > ... mal sehen... (das & lt ; und & gt ; )
[Diese Nachricht wurde geändert von robert (am 24 September 1999).]
Danke für die Hilfe, war leider vergebens, bin grad selber draufgekommen.
ciao
Stefan
Hallo!
Freut mich das du eine Lösung gefunden hast.
Die Lösung würde mich aber interessieren, da ich selber oft mit Perl/CGI zutun habe.
Gruß
Robert
Hallo Robert!
Ich habe das Problem mit dem \r gelöst, indem ich bei den Formulareingaben das \r in \n konvertiere, und schon gehts einwandfrei.
ciao
Stefan
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.