PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Newline Zeichen ersetzen



sk
23-09-1999, 17:42
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

robert
23-09-1999, 19:20
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, 01: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

sk
24-09-1999, 15:27
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

robert
24-09-1999, 17:42
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).]

sk
24-09-1999, 19:19
Danke für die Hilfe, war leider vergebens, bin grad selber draufgekommen.

ciao

Stefan

robert
26-09-1999, 17:31
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

sk
27-09-1999, 14:24
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