Gast: "\n\n" wird nicht erkannt

Hallo,

irgendwie stehe ich auf dem Schlauch.

Habe aus der DB einen Text mit doppelter Zeilenschaltung, das soll ein Absatzende sein.

$row['beschreibung'] = str_replace( "\n", "xxx", $row['beschreibung'] );

Hier kommt wie erwartet TextxxxxxxText heraus

$row['beschreibung'] = str_replace( "\n\n", "xxx", $row['beschreibung'] );

Da werden die beiden Zeilenschaltungen nicht erkannt, sie bleiben erhalten. Das Merkwürdige ist, dass sie hinterher in einer Funktion mit

  $text = str_replace( "\n\n",   "</p><p>",                   $text);  

richtig ersetzt werden.

Was habe ich übersehen?

Gruß, Gast

  1. Hier mal im Zusammenhang:

      while ( $row = @mysql_fetch_array( $res_ter ))  
      {  
        // 2011-11-12 ersten Absatz finden  
    //  $row['beschreibung'] = str_replace( "\n\n", "xxx", $row['beschreibung'] );  
        $position         = mb_strpos( $row['beschreibung'], "\n\n" ); // Ende erster Absatz  
    echo "position=[".$position."]";  
        if ( $position && $position < 301 )  
        {  
          $beschreibung_abs = aufbereitenText( $row['beschreibung'], $position+2 );  
        } else {  
          $beschreibung_abs = aufbereitenText( $row['beschreibung'], 300 )." ...x";  
        }  
    
    

    echo ergibt
    position=[]

  2. Hi,

    $row['beschreibung'] = str_replace( "\n", "xxx", $row['beschreibung'] );

    Hier kommt wie erwartet TextxxxxxxText heraus

    Dann wurden wohl alle einzelnen \n ersetzt.

    $row['beschreibung'] = str_replace( "\n\n", "xxx", $row['beschreibung'] );

    Da werden die beiden Zeilenschaltungen nicht erkannt, sie bleiben erhalten.

    Dann gab es wohl keine zwei direkt aufeinander folgenden \n.

    $position         = mb_strpos( $row['beschreibung'], "\n\n" ); // Ende erster Absatz
    echo "position=[".$position."]";

    echo ergibt
    position=[]

    Das ist die Bestätigung – es gab kein \n\n im Text, also hat die Funktion statt einer Trefferposition false zurück gegeben.

    Was habe ich übersehen?

    Das ein Zeilenumbruch nicht unbedingt (nur) aus dem Zeichen \n bestehen muss.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hi,

      Das ein Zeilenumbruch nicht unbedingt (nur) aus dem Zeichen \n bestehen muss.

          $row['beschreibung'] = str_replace( chr(13), "", $row['beschreibung'] );  
          $position            = mb_strpos( $row['beschreibung'], "\n\n" ); // Ende erster Absatz  
      
      

      Jetzt klappt es. Danke

      Gruß, Gast