Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Alternativ zu nl2br (https://www.delphipraxis.net/26690-%5Bphp%5D-alternativ-zu-nl2br.html)

CalganX 27. Jul 2004 19:32


[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:
[[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 //
Damit die Zeilenumbrüche korrekt erstellt werden jage ich beim Darstellen noch einmal ein
Code:
$line = nl2br($line);
drüber.
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:
<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>
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.

Jetzt ist meine Frage, ob es eine Alternativ zu nl2br(); gibt, oder ob ich jetzt für die Tabelle irgendeine Alternative finden muss.

Chris

titus 27. Jul 2004 19:53

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 trim()?

mfG, titus

CalganX 27. Jul 2004 19:58

Re: [PHP] Alternativ zu nl2br
 
Hi,
nein... Das Problem ist, dass PHP mit nl2br(); auch hinter HTML-Dinge wie
Code:
<table>
ein
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

ichhabefertig 27. Jul 2004 19:59

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();.

CalganX 27. Jul 2004 20:06

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

titus 27. Jul 2004 20:11

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

CalganX 27. Jul 2004 20:22

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

tommie-lie 27. Jul 2004 20:52

Re: [PHP] Alternativ zu nl2br
 
In dem Fall wäre der umzubrechende Code ja mit "[/no2br]" und "[no2br]" umschlossen:
Code:
[no2br]<html>
  <und mehr>[/no2br]
    Blah
    blubb
  [no2br]</und mehr>
</hmtl>[/no2br]
Also sieht der Ausdruck genauso aus, nur andersrum ;-)
Code:
$newtext = preg_replace('#\[\/no2br\](.*?)\[no2br\]#ie', 'nl2br(\\1);');
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...

titus 27. Jul 2004 21:04

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

tommie-lie 27. Jul 2004 21:30

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 17:32 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz