Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Newline Zeichen ersetzen

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.09.1999
    Ort
    Oberbayern
    Beiträge
    18

    Question 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

  2. #2
    Registrierter Benutzer
    Registriert seit
    14.04.1999
    Ort
    Rheinstetten
    Beiträge
    122

    Post

    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...


    [Diese Nachricht wurde geändert von robert (am 23 September 1999).]

  3. #3
    Dufty II
    Gast

    Question


    > Ist schwer hier Quellcode zu schreiben
    Mmmmh, vielleicht hilft der code-tag?

    Code:
    $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

  4. #4
    Registrierter Benutzer
    Registriert seit
    05.09.1999
    Ort
    Oberbayern
    Beiträge
    18

    Post

    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

  5. #5
    Registrierter Benutzer
    Registriert seit
    14.04.1999
    Ort
    Rheinstetten
    Beiträge
    122

    Post

    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).]

  6. #6
    Registrierter Benutzer
    Registriert seit
    05.09.1999
    Ort
    Oberbayern
    Beiträge
    18

    Talking

    Danke für die Hilfe, war leider vergebens, bin grad selber draufgekommen.

    ciao

    Stefan

  7. #7
    Registrierter Benutzer
    Registriert seit
    14.04.1999
    Ort
    Rheinstetten
    Beiträge
    122

    Post

    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

  8. #8
    Registrierter Benutzer
    Registriert seit
    05.09.1999
    Ort
    Oberbayern
    Beiträge
    18

    Post

    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

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •