split.s: regex: Absatz finden und in <p> einfügen

ich suche nach einem regex der Absätze in einem $string findet und diesen dann entsprechend mit <p> klammert.

Das Problem: Der Text stammt aus Usereingaben, das heisst es können teilweise auch viele Newline-Zeichen in Folge auftreten die dann aber nur zu einem Absatz führen sollen.

Hier mal ein Beispiel:

  
Dies ist ein Text  
  
  
Dies ist ein Absatz nach zwei Newlines  
  
Ein weiterer Absatz  
  
  
  
  
  
Noch ein Absatz  

Das ganze sollte dann später mal so aussehen:

  
<p>Dies ist ein Text</p>  
<p>Dies ist ein Absatz nach zwei Newlines</p>  
<p>Ein weiterer Absatz</p>  
<p>Noch ein Absatz</p>  

Wie könnte man sowas in PERL umsetzen?

Bin für jeden Tipp, egal wie klein, dankbar!
In regulären Ausdrücken war ich schon immer voll die Niete :D

  1. Grüße,
    müssen es reguläre ausdrücke sein?  doppelte newlines durch </p></p> zu ersetzen wäre nicht ok?
    MFG
    bleicher

    --
    __________________________-

    FirefoxMyth
    1. Ich brauche das komplett in <p></p> damit ichs formatieren kann. Ich will ja auch schönes HTML haben.

  2. hi,

    Wie könnte man sowas in PERL umsetzen?

      
    my $s = qq(  
    eins  
      
    zwei  
      
      
    drei  
      
    );  
    $s =~ s/^\s+|\s+$//;         # trim  
    my @txt = split /\n+/, $s;  # an Zeilenumbruch splitten  
      
    print "<p>".join("</p>\n<p>", @txt)."</p>", "\n";  
    
    

    Hotti

  3. Das ganze sollte dann später mal so aussehen:

    <p>Dies ist ein Text</p>
    <p>Dies ist ein Absatz nach zwei Newlines</p>
    <p>Ein weiterer Absatz</p>
    <p>Noch ein Absatz</p>

    
    >   
    > Wie könnte man sowas in PERL umsetzen?  
      
    `my $out = join('', map{ '<p>'.$_."</p>\n" } split( /\n{2,}/, $in ) );`{:.language-perl}  
      
    mfg Beat
    
    -- 
    
    ><o(((°>           ><o(((°>  
    
       <°)))o><                     ><o(((°>o  
    Der Valigator leibt diese Fische
    
    1. Das ganze sollte dann später mal so aussehen:

      <p>Dies ist ein Text</p>
      <p>Dies ist ein Absatz nach zwei Newlines</p>
      <p>Ein weiterer Absatz</p>
      <p>Noch ein Absatz</p>

      
      > >   
      > > Wie könnte man sowas in PERL umsetzen?  
      >   
      > `my $out = join('', map{ '<p>'.$_."</p>\n" } split( /\n{2,}/, $in ) );`{:.language-perl}  
      >   
      > mfg Beat  
        
      im prinzip genau was ich haben wollte :) Aber wie kann ich jetzt noch integrieren, dass er nur ein einzelnes Newline durch ein <br /> ersetzt?
      
      1. my $out = join('', map{ '<p>'.$_."</p>\n" } split( /\n{2,}/, $in ) );

        mfg Beat

        im prinzip genau was ich haben wollte :) Aber wie kann ich jetzt noch integrieren, dass er nur ein einzelnes Newline durch ein <br /> ersetzt?

          
        my $out = join('', map{  
              s#\n#<br \>#g;  
              '<p>'.$_."</p>\n"  
           } split( /\n{2,}/, $in ) );  
        
        

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
        Der Valigator leibt diese Fische
        1. Danke, jetzt klappts wirklich prima :)
          Ich zerbrech mir schon seit gestern die Birne darüber und hatte deshalb kaum Schlaf heut nacht. Ich bin wirklich dankbar, nicht dass es jetzt so aussieht als hätte ich euch jetzt hier ausgenutzt oder so.

          Danke nochmals