tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
818
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von lolilol
    lolilol lolilol ist offline Mitglied Silber
    Registriert seit
    May 2004
    Ort
    Freiburg i. Brsg.
    Beiträge
    52
    Hallo,

    ich habe eine Webform erstellt, die in einer MySQL-Datenbank Seiteninhalte abspeichert.

    Dabei ist es möglich HTML und plainText zu verwenden. Der Inhalt des Datenbankfeldes wird zum anzeigen ausgelesen und mit nl2br($inhalt) ausgegeben.

    Mein Problem hierbei ist, dass nl2br() natürlich die Zeilenumbrüche ("\n") nicht nur für plainText-Zeilen in HTML-Zeilenumbrüche ("<br />") umwandelt, sondern auch für Zeilen, die reine HTML-Tags entahlten.

    Bsp:
    Der Ursprungstext
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    Hallo Welt!
    Bist du da?
    <table>
     <tr>
      <td>Hallo alle anderen!</td>
     </tr>
    </table>
    Ende.
    wird hierbei in
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    Hallo Welt!<br />
    Bist du da?<br />
    <table><br />
     <tr><br />
      <td>Hallo alle anderen!</td><br />
     </tr><br />
    </table><br />
    umgwandelt.

    Dies führ natürlich zu einer viel zu weit auseinandergezogenen Darstellung.

    Hat jemand eine Idee, wie man dieses Problem lösen könnte? phpBB-Foren (und wahrscheinlich auch dieses) haben dieses Problem ja nicht. Wie fügen die die Zeilenumbrüche ein? per RegEx ohne "s" Identifier?

    Gruß
    loli
     
    /!\ Beware of lolis /!\

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    nach dem nl2br() z.B.

    Code :
    1
    
    $text=str_replace('><br />','>',$text);
     

  3. #3
    Avatar von lolilol
    lolilol lolilol ist offline Mitglied Silber
    Registriert seit
    May 2004
    Ort
    Freiburg i. Brsg.
    Beiträge
    52
    Ja, habe ich mir auch überlegt, aber ich hatte gehoft, dass es eine möglichkeit gibt, die weniger Performance schluckt :|

    Die Texte können über mehrere Seiten gehen.

    Greez
    loli

    [EDIT]
    Außerdem werden dann auch Zeilen nicht umgebrochen, wenn plainText und HTML zusammen benützt werden e.g. "Hallo Welt<table>" ....

    Das wäre dann nur mit RegEx zu lösen und das verlangsamt mir die Seite doch zu stark
    [/EDIT]
     
    /!\ Beware of lolis /!\

  4. #4
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Naja...mit RegExp ginge es so:
    Code :
    1
    
    $text=preg_replace('/([^>])[\s]+$/m', '\\1<br />', $text);

    Zur Performance kann ich keine sachdienlichen Hinweise geben.... ich glaub aber nicht, dass du bei soetwas überhaupt ohne RegExp auskommst(du wirst da ja sicher noch mehr tun als Zeilen umbrechen)
     

  5. #5
    Avatar von lolilol
    lolilol lolilol ist offline Mitglied Silber
    Registriert seit
    May 2004
    Ort
    Freiburg i. Brsg.
    Beiträge
    52
    Mhh... ok, ich werde einfach die RegEx benutzen. *seufz*

    loli

    ~closed~
     
    /!\ Beware of lolis /!\

  6. #6
    Sicaine Tutorials.de Gastzugang
    oO Perfomance? Na egal lassen wir das.

    Öhm ich stell mir hier mal die komische Frage wieso jemand ne HTML-Table verwendet aber kein <br> kennt? Bzw. halt <br/>?
     

  7. #7
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Es gibt bereits weitaus bessere Funktionen, die nicht nur Steuerzeichen in erzwungene Zeilenumbrüche umformen, sondern auch welche, die den Text durch aufeinanderfolgende Steuerzeichen in Absätze gliedert. So z. B. die autop-Funktion von Matthew Mullenweg.
     
    Markus Wulftange

  8. #8
    Avatar von lolilol
    lolilol lolilol ist offline Mitglied Silber
    Registriert seit
    May 2004
    Ort
    Freiburg i. Brsg.
    Beiträge
    52
    Öhm ich stell mir hier mal die komische Frage wieso jemand ne HTML-Table verwendet aber kein <br> kennt? Bzw. halt <br/>?
    Kannst du mir das nochmal auf deutsch formulieren, bitte?

    Greez
    loli
     
    /!\ Beware of lolis /!\

  9. #9
    Registriert seit
    Jan 2003
    Ort
    Mainz
    Beiträge
    165
    Er meint damit, dass wieso du Zeilenumbrüch ber nl2br umwandelst, wenn der Autor des in das Formular geschriebenen Textes html-Code kennt. Und womit er recht hat. Weil wer ein table Tag kennt, kennt auch br's...
     
    Widriger aber sind mir noch alle Speichellecker; und das widrigste Thier von Mensch, das ich fand, das taufte ich Schmarotzer: das wollte nicht lieben und doch von Liebe leben.
    -------------
    Gruß Ruben

  10. #10
    Avatar von lolilol
    lolilol lolilol ist offline Mitglied Silber
    Registriert seit
    May 2004
    Ort
    Freiburg i. Brsg.
    Beiträge
    52
    Ok, das habe ich jetzt verstanden, aber das ganze ist eine art abgespecktes CMS-System für die Seite des Instituts für Biometrie und Informatik der Uni-Klinik Freiburg (PS: nicht meine Seite! Die alte!) und einige der Dipl.Statistiker dort können kaum HTML... es gibt also die Möglichkeit HTMl zu verwenden, aber es sit nicht zwingend (und für die, die keines mögen, gibt es immer noch die Java-Script-Includes wie hier im Forum = HTML für Links und so). Also schon berechtigt, denke ich und ich will sie auch nicht überfordern, indem sie extra ein Häckchen machen müssen, um HTML zu verwenden :P

    Greez
    loli
     
    /!\ Beware of lolis /!\

  11. #11
    Registriert seit
    Jan 2003
    Ort
    Mainz
    Beiträge
    165
    Dann wird dir wohl kaum was übrig bleiben.

    Aber mal offtopic, ich möchte auch ein cms mit evtl. so einem JavaScript proggen wie hier auf Tuts.de, aber wie geht es das ich zum Beispiel einen Link mit entsprechendem Html-Code per JS einfüge, kannst du mir da mal nen Link zu ner Erklärung geben? Wills ja auch verstehen...
     
    Widriger aber sind mir noch alle Speichellecker; und das widrigste Thier von Mensch, das ich fand, das taufte ich Schmarotzer: das wollte nicht lieben und doch von Liebe leben.
    -------------
    Gruß Ruben

Ähnliche Themen

  1. JSF 1.2 - h:-tags werden gerendert, f:-tags nicht?
    Von Firestorm696 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 19.03.10, 08:46
  2. Antworten: 9
    Letzter Beitrag: 08.01.08, 21:11
  3. Wie soll ich das mit HTML Tags machen?
    Von Eichhornleib im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 19.12.04, 03:29
  4. Antworten: 2
    Letzter Beitrag: 03.11.04, 19:43
  5. HTML-Tags werden ausgelassen
    Von g-zus im Forum PHP
    Antworten: 2
    Letzter Beitrag: 28.06.04, 17:17