"\n\n" wird nicht erkannt
Gast
- php
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
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=[]
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
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