zeilenumbrüche ersetzen
Manuel W.
- php
0 Dieter Raber0 Tom
Hallo Community!
Ein wahrscheinlich ganz einfaches Problem, für das ich jedoch selbst noch keine Lösung gefunden habe..
Ich will sämtliche in einem String vorkommende Zeilenumbrüche gegen die Zeichenkette "<br />\n " ersetzen. Problem hierbei ist, dass es insgesamt drei verschiedene Arten gibt einen Zeilenumbruch zu "beschreiben".. CR, LF, und CRLF (afaik).
"Normales" ersetzen mittels str_replace() funktioniert nicht.
Irgendwelche Vorschläge?
P.S.: Noch besser wäre es, wenn die Zeilenumbrüche gegen "<br />??? " ausgetauscht werden würden, wobei "???" bei WIN CRLF, bei UNIX LF, und bei MacOS CR sei.
Hallo,
Folgenden Schnipsel habe ich mir irgendwann mal bei CK abgeguckt:
$text = preg_replace('/(\015\012)|(\015)|(\012)/','<br />', $text);
Dieter
Eure Vorschläge funktionieren leider beide nicht.
, dann würde im ersten Durchgang das \r gegen <br />\nBLA ausgetauscht werden. Im darauffolgenden zweiten Durchgang würde das \n ausgetauscht werden, weshalb $ausgabe dann schon <br /><br />\nBLABLA wäre etc.
So hat es auf mich zumindest den Anschein.. Wenn ich mir die Ausgabe so ansehe.
Moin!
Mann oh Mann...
Du ersetzt:
"\n\r" -> "\n"
"\r" -> "\n"
"\n" -> "<br />\n"
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hello,
"\n\r" -> "\n"
das ist ein ungewöhnlicher Code...
\r\n wäre der übliche.
Außerdem muss man vorher nicht ersetzen, wenn man gemischte Angaben aus drei Systemen hat. Wie ich schon sagte, sit die Funktion nl2br() schlau genug, \r\n \r oder \n jeweils durch _ein_ <br /> _vor_ der gefundenen Sequenz zu ergänzen.
Kleiner Test:
<?php ### newline.php ###
$text = "Mein Text\nder Zeilenumbrüche\r\nenthält und nun\r mit breaks ergänzt werden soll";
echo "<pre>";
echo $text;
echo "</pre>";
$text = nl2br($text);
echo "<pre>";
echo $text;
echo "</pre><br />";
for ($i=0; $i < strlen($text);$i++)
{
$dec = ord($text{$i});
echo "<b>".htmlentities($text{$i})."</b>".dechex($dec)." ";
}
?>
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello,
nl2br() sollte das bei eingeschaltetem autodetect für den Zeilenumbruch schon leisten. Musst Du eben mal einen Test machen...
Und sonst muss man vorher eben noch ein
$_search = array(chr(13).chr(10),chr(13),chr(10));
$replace = chr(13).chr(10);
$ausgabe = str_replace($_search,$replace,$eingabe)
durchlaufen lassen.
Liebe Grüße aus http://www.braunschweig.de
Tom