str_replace Problem

Uli_87

Erfahrenes Mitglied
Guten Tag,

In einem Script sollte ich das html tag <br> in \n umwandeln, da ich es in einem Formular anzeigen will.

Mit folgendem Code versuche ich es zu machen:
PHP:
$txt = str_replace("<br>","\n",$daten1['text']);
$txt1 = str_replace("<br>","\n",$daten1['text1']);

Doch die ausgabe von $txt und $txt1 beinhaltet immer noch <br>

Kann mich jemand helfen?
Vielen Dank
Uli
 
Steht denn dort vielleicht irgendwo ein freizeichen, z.B.

PHP:
< br>
<br >
<BR>

Du müsstest alle Variationen einzeln testen oder mit Preg_Replace arbeiten.
 
versuche es doch lieber mit ereg_replace!

PHP:
$txt = ereg_replace('/\<[\s]*br[\s\/]*\>/i', "\n" $daten1['text']);
 
Die Auszeichnung „< br>“ sollte eigentlich von den Browsern als Klartext dargestellt werden, da diese Schreibweise einer Elementdeklaration nicht erlaubt ist. Übrigens solltest du prüfen, ob dem HTML-Zeilenumbruch nicht schon ein Zeilenumbruchsequenz folgt. Daher mein Vorschlag:
PHP:
preg_replace('#<br\s*/?\s*>(?:\x0D\x0A|\x0A|\x0D)?#si', "\n", $string)
Folgendes sollte daher gleich dargestellt werden:
PHP:
$string = '1<br/
>2<
br
>3<br
/ >4';
echo '<pre>'.$string.'</pre>';
echo '<pre>'.preg_replace('#<br\s*/?\s*>(?:\x0D\x0A|\x0A|\x0D)?#si', "\n", $string).'</pre>';
 
Auch wenn das jetzt total dekonstruktiv ist und am Problem vorbeischlägt: Es wäre vermutlich besser, wenn du versuchen würdest, die <br> aus den Datensätzen (die ja vermutlich in einer Datenbank liegen) komplett zu entfernen und sie stattdessen mit [phpf]nl2br[/phpf] bei der Ausgabe dynamisch einzubauen. So ersparst du dir das unnötige Gefrickel beim Bearbeiten der Daten.
 
Zurück