dey: Sauber strukturiertes HTML

Hallo,

ich habe Probleme damit mein HTML welches ich mit PHP erzeuge:

die Zeile

  
<link href='/fme/fme.css' rel='stylesheet' type='text/css'></head><body id='index'><div id="navi_box1">  

erzeuge ich mit folgendem PHP code

  
echo "<link href='".$dir_root."fme.css' rel='stylesheet' type='text/css'>";  
  
echo "</head>";  
  
echo "<body id='$body_id'>";  
include("navi-element.php");  

Natürlich würde ich gerne

  
<link href='/fme/fme.css' rel='stylesheet' type='text/css'>  
</head>  
<body id='index'>  
<div id="navi_box1">  

~~~ sehen.  
  
Geht das?  
  
Auch Einrückungen würde ich gerne präziser haben (ist allerdings nice-to-have).  
  
  
  
bydey

-- 
\-- noch immer ein erfolgloser <DIV> Jünger --
  1. Hi there,

    Geht das?

    Ja, auch wenn es nicht wirklich etwas bringt, solange es keinen Contest für html-Schönheit gibt.

    Du musst an das Ende jeder Zeile einen Wagenrücklauf setzen. Also

    echo $blabla .chr(13);

    wobei $blabla dein php-String ist, der die html-Zeile erzeugt...

    1. Moin!

      Ja, auch wenn es nicht wirklich etwas bringt, solange es keinen Contest für html-Schönheit gibt.

      Du musst an das Ende jeder Zeile einen Wagenrücklauf setzen. Also

      echo $blabla .chr(13);

      wobei $blabla dein php-String ist, der die html-Zeile erzeugt...

      Ich würde ein Linefeed für kompatibler halten:
      chr(10) bzw. "\n".

      CR (Wagenrücklauf) ist alte Mac-Form (OS X ist ja ein Unix).
      LF ist Unix-Form (mit der auch etliche Windows-Editoren was anfangen können).
      CRLF wäre die DOS/Win-Form (wobei CR von vielen Unix-Editoren als Steuerzeichen mit angezeigt wird, was ich etwas nervig finde).

      - Sven Rautenberg

      --
      My sssignature, my preciousssss!
  2. Hi dey,

    Geht das?
    Auch Einrückungen würde ich gerne präziser haben (ist allerdings nice-to-have).

    ja, mit den Steuerzeichen \n \r und \t - leider kann ich dir nichts über die Reihenfolge sagen. "\t" steht übrigens für den Tabulator.
    echo "Hallo\n\tLeute"; sollte so aussehen:

    Hallo
        Leute

    Viel Spaß.

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    sh:( fo:) rl:( br:> ch:~ n4:& ie:% mo:) va:| de:< zu:| fl:( ss:) ls:[
    1. Hi,

      ja, mit den Steuerzeichen \n \r und \t - leider kann ich dir nichts über die Reihenfolge sagen.

      \n ist auf Un*xen das Umbruchzeichen, \r\n auf Windosen, \r auf (AFAIK älteren) Macs. HTTP und ähnliche Standards definieren ebenfalls \r\n, um maximale Problemfreiheit zu garantieren.

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. Hallo,

        Hi,

        ja, mit den Steuerzeichen \n \r und \t - leider kann ich dir nichts über die Reihenfolge sagen.

        \n ist auf Un*xen das Umbruchzeichen, \r\n auf Windosen, \r auf (AFAIK älteren) Macs. HTTP und ähnliche Standards definieren ebenfalls \r\n, um maximale Problemfreiheit zu garantieren.

        echo "<link href='".$dir_root."fme.css' rel='stylesheet' type='text/css'>"\r\n;wirft
        Warning: Unexpected character in input: '' (ASCII=92) state=1 in D:\Eigene\html\fme_new\header.php on line 14
        zurück
        echo "<link href='".$dir_root."fme.css' rel='stylesheet' type='text/css'>".chr(13);
        funktioniert

        bydey

        --
        -- noch immer ein erfolgloser <DIV> Jünger --
        1. Hallo dey,

          echo "<link href='".$dir_root."fme.css' rel='stylesheet' type='text/css'>"\r\n;wirft
          Warning: Unexpected character in input: '' (ASCII=92) state=1 in D:\Eigene\html\fme_new\header.php on line 14
          zurück

          logisch - dass \r\n ist genauso ein String wie der Rest der Zeile und muss ebenfalls in die Anführungszeichen.

          Grüße aus Nürnberg
          Tobias

          --
          Softwaretipp: perlGrep
          1. Hallo,

            logisch - dass \r\n ist genauso ein String wie der Rest der Zeile und muss ebenfalls in die Anführungszeichen.

            Na, logisch ;oP

            bydey

            --
            -- noch immer ein erfolgloser <DIV> Jünger --
      2. Hi Cheatah,

        \n ist auf Un*xen das Umbruchzeichen, \r\n auf Windosen, \r auf (AFAIK älteren) Macs. HTTP und ähnliche Standards definieren ebenfalls \r\n, um maximale Problemfreiheit zu garantieren.

        Ich liebe an diesem Forum, dass man Dinge, die man gar nicht wissen wollte, erfährt und diese dann auch noch real einsetzen kann. ;)

        Beispiel: Ich antworte dem UP etwas larifari und bekomme von Cheatah die genaue Erklärung, danke übrigens, ich wollte das schon immer mal wissen, aber irgendwie war es wohl nicht so wichtig, dass ich ernsthaft gesucht habe.
        Mit diesem neu gewonnenen Wissen sitze ich in der Gegend rum und werde doch eine Stunde später gefragt, wie sich das mit den Zeielnumbrüchen etc... verhält bei den verschiedenen Betriebssystemen,

        Stolz konnte ich mit Wissen glänzen.

        Ich danke Euch.

        ciao
        romy

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        sh:( fo:) rl:( br:> ch:~ n4:& ie:% mo:) va:| de:< zu:| fl:( ss:) ls:[
  3. Hi,

    Geht das?

    sicher. Du musst die Umbrüche (bzw. Einrückungen) lediglich bei der Ausgabe mit angeben.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  4. Hi!

    ich habe Probleme damit mein HTML welches ich mit PHP erzeuge:

    die Zeile

    <link href='/fme/fme.css' rel='stylesheet' type='text/css'></head><body id='index'><div id="navi_box1">

    
    > erzeuge ich mit folgendem PHP code  
    > ~~~php
      
    
    > echo "<link href='".$dir_root."fme.css' rel='stylesheet' type='text/css'>";  
    >   
    > echo "</head>";  
    >   
    > echo "<body id='$body_id'>";  
    > include("navi-element.php");  
    > 
    
    

    Natürlich würde ich gerne

    <link href='/fme/fme.css' rel='stylesheet' type='text/css'>
    </head>
    <body id='index'>
    <div id="navi_box1">

    
    >   
    > Geht das?  
    >   
    > Auch Einrückungen würde ich gerne präziser haben (ist allerdings nice-to-have).  
      
    Wo liegt denn nun genau dein Problem? Aus deinem obigen Posting kann man leider nicht schlau werden.  
      
    Suchst du eventuell die [Heredoc-Syntax](http://de.php.net/manual/de/language.types.string.php#language.types.string.syntax.heredoc)?  
      
    Grüße,  
    Fabian St.
    
    -- 
    Selfcode: [ie:{ fl:( br:> va:) ls:\[ fo:) rl:( n4:( ss:) de:> js:| ch:? mo:) zu:)](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%28+ss%3A%29+de%3A%3E+js%3A%7C+ch%3A%3F+mo%3A%29+zu%3A%29)
    
  5. das problem ist die erzeugung von html als ausgabe mit php. warum?

    schreibe lieber alles in html und ersetze die variablen teile mit php statements, so wie es auch sein soll. dann wird der php interpreter auch nicht unnötig gequält.

    1. Hi there,

      schreibe lieber alles in html und ersetze die variablen teile mit php statements, so wie es auch sein soll.

      Woher hast Du das? Es gibt genügend grosse Seite, die komplett in einem php-Dokument geschrieben sind und deren Inhalt meist aus einer DB kommt. Da sind quasi alle Teile variabel. Und?

      dann wird der php interpreter auch nicht unnötig gequält.

      Nja, hätte er halt etwas gelernt, dann müßte er nicht ständig php-Dokumnte interpretieren ;)

      1. der titel ist 'sauber'

        leider sieht man es zu oft, das per programmausgabe pures html ausgegeben wird. besonders bei perl und javaservlets.

        eine saubere lösung besteht aber darin, einen rahmen des konstanten htmls zu haben (template) und die variablen teile zu dynamisieren, wie dies dann auch bei java mit den server pages gemacht wird.

        mit php geht dies besonders gut. daher sollte von einer trennung aus statischem html und dynamischem html strengstens gebrauch gemacht werden. dann wird alles schön transparent. leider beachten dies noch zu wenige leute.

    2. Moin!

      das problem ist die erzeugung von html als ausgabe mit php. warum?

      Nein, das ist nicht das Problem. Das konkrete Problem hier ist das Fehlen eines Zeilenumbruchs im generierten Quelltext.

      schreibe lieber alles in html und ersetze die variablen teile mit php statements, so wie es auch sein soll. dann wird der php interpreter auch nicht unnötig gequält.

      Du meinst also, dass man in ein HTML-Dokument solche <?php ... ?> Inseln reinsetzen sollte? Völlig blödsinnig.

      Erstens muß auch das HTML durch den Interpreter (der muß ja schließlich suchen, wo PHP zu finden ist) und ausgegeben werden, zweitens ist dieser Insel-PHP-Stil verpönt.

      Es gibt zwei Ansätze: Entweder ist das zu lösende Problem so klein, dass die Übersicht nicht verloren geht, wenn man PHP und HTML mischt bzw. HTML mit echo ausgibt.

      Oder das Problem bzw. Projekt ist so groß, dass man ein Template-System einsetzt. Dann taucht HTML grundsätzlich nicht mehr im PHP-Code auf, weder als statischer HTML-Bereich um den Code herum, noch in echos.

      Wenn's wie hier auch noch um Schönheit des erzeugten Codes geht (die hilft niemandem, außer dem Debugging von HTML-Fehlern), bietet sich die Template-Methode an.

      - Sven Rautenberg

      --
      My sssignature, my preciousssss!
      1. es ging nicht darum den fehlenden zeilenumbruch als problem darzustellen. dieser kann in php selbstverständlich mit echo "\n" erzeugt werden, sondern um die falsche vorgehensweise.

        was du als php-inseln bezeichnest, ist möglicherweise von dir verpönt. dann findest du sicherlich auch jsp mit den jsp-inseln völlig blödsinnig.

        wenn der interpreter nicht im aktiven modus ist (<?php), wird die eingabe direkt in die ausgabe durchgereicht. das ist sicherlich sinnvoller als diese ausgabe im aktiven modus mit echo auszugeben.

        wer mischt denn hier php und html ? in meinen (übrigens sehr großen projekten) ist in den php-dateien keinerlei html zu finden. dies sind reine klassen für die anwendung. in den html-dateien werden diese klassen referenziert.
        das nenne ich richtiges templating, anstatt mit irgendwelchen "template-systemen" etwas zurecht zu basteln, mit welchem dann ein html erzeugt wird.

        bei der richtigen trennung von applikationslogik und darstellung kann man sich auf das wesentliche konzentrieren.

        das erzeugte html meiner anwendungen ist übrigens sehr schön zu lesen.