![]() |
[PHP] Alternativ zu nl2br
Hi,
ich bin gerade dabei ein neues CMS zu schreiben. Auf PHP-Basis. Funktioniert soweit super. Nur ist mir jetzt folgendes aufgefallen. Eine Seite sieht z.B. so aus:
Code:
Damit die Zeilenumbrüche korrekt erstellt werden jage ich beim Darstellen noch einmal ein
[[Designing the Future!]]
[CSD-Software :: Designing the Future] // PAGECONTENT // <table width="80%" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="10%" align="center" valign="top"> Hier steht ein wenig Text... Und noch mehr in einer zweiten Zeile </td> <td width="40%" valign="top"> Hier steht ein wenig Text... Und noch mehr in einer zweiten Zeile </td> </tr> </table> // EOF //
Code:
drüber.
$line = nl2br($line);
Funktioniert theoretisch auch wunderbar. Praktisch gibt es jedoch ein paar Probleme: dadurch dass der Code für die Tabellen schön formatiert ist, wird hinter jede Zeile ein gesetzt. Und deswegen sieht das ganze am Ende ungefähr so aus:
Code:
Wodurch die Tabelle einige Zeilen nach unten rückt, weil Zeilenumbrüche innerhalb einer Tabelle (also da, wo kein Text sein sollte) nicht wirklich korrekt sind.
<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr> <td width="10%" align="center" valign="top"> Hier steht ein wenig Text... Und noch mehr in einer zweiten Zeile </td> <td width="40%" valign="top"> Hier steht ein wenig Text... Und noch mehr in einer zweiten Zeile </td> </tr> </table> Jetzt ist meine Frage, ob es eine Alternativ zu nl2br(); gibt, oder ob ich jetzt für die Tabelle irgendeine Alternative finden muss. Chris |
Re: [PHP] Alternativ zu nl2br
Ich verstehe das Problem nicht wirklich eine 100 prozentige Alternatvie wäre str_replace("\r\n", '
', $text); Vielleicht meinst du ![]() mfG, titus |
Re: [PHP] Alternativ zu nl2br
Hi,
nein... Das Problem ist, dass PHP mit nl2br(); auch hinter HTML-Dinge wie
Code:
ein
<table>
setzt. Und das ist halt ... nunja... nicht korrekt und das Ergebnis sieht auch recht bescheiden aus. Mit "Alternative" meinte ich, ob nicht irgendwer eine hardgecodete Funktion kennt/hütet (o.ä.), die eben das umgeht. Chris |
Re: [PHP] Alternativ zu nl2br
Hallo,
in Teilen, die lediglich HTMl Tags enthalten, benutzt Du natürlich kein nl2br(), sondern hängst einfach ein \n an das Zeilenende, wenn Du den Code unbedingt formatiert haben willst. Nur bei Text, der Umbrüche enthält, benutzt Du nl2br();. |
Re: [PHP] Alternativ zu nl2br
Hi,
hö? Ein einfaches Anhängen wird es aber nicht sein, weil ja trotzdem ein Zeilenumbruch da sein muss, wo der Text steht. ;) Das sollen ja zwei Zeilen sein. ;) Chris |
Re: [PHP] Alternativ zu nl2br
naja vielleicht ein möglichkeit:
du machst um den text, der umgebrochen werden soll sowas: <nl2br>text text test</nl2br> und dann einfach: $text = preg_replace('#<nl2br>(.*?)</nl2br>#ie', 'nl2br(\'\\1\');'); ansonsten ist das nur schwer möglich (man muss halt kennzeichen, wo der text umgebrochen werden soll und wo nicht.) Aber ich meine, wenn der User schon alleine seine Tabellen machen muss, dann sollte er auch alleine seine machen ;) mfG, titus |
Re: [PHP] Alternativ zu nl2br
Hi,
hm... einfacher fände ich den genau umgekehrten Fall. ;) Alles, wo kein Umbruch sein soll, wird mit [no2br] oder umschlossen. Kennst du dafür irgendwas? Ich würde mir ja selber einen regulären Ausdruck schreiben, nur habe ich ich davon so viel Ahnung, wie eine Kuh vom Coden. ;) Chris |
Re: [PHP] Alternativ zu nl2br
In dem Fall wäre der umzubrechende Code ja mit "[/no2br]" und "[no2br]" umschlossen:
Code:
Also sieht der Ausdruck genauso aus, nur andersrum ;-)
[no2br]<html>
<und mehr>[/no2br] Blah blubb [no2br]</und mehr> </hmtl>[/no2br]
Code:
Ich bin mir grad' nicht sicher, ob der Forward Slash in PCRE auch escaped werden muss und auch nicht ob es bei einem der Zeichen n, o, 2, b und r der Fall ist, ist alles so lange her...
$newtext = preg_replace('#\[\/no2br\](.*?)\[no2br\]#ie', 'nl2br(\\1);');
|
Re: [PHP] Alternativ zu nl2br
Ne so geht das nicht.
Man müsste den Ausdruck irgendwie mit ^ umdrehen, aber es klappt bei mir einfach nicht :| ich probier mal weiter |
Re: [PHP] Alternativ zu nl2br
Wieso geht das nicht?
Mit ^ findest du Dinge, die das gesuchte nicht enthalten, damit kann man keinen Blumentopf gewinnen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz