Johanna: echo-Formatierung fehlerhaft

Hallo :)

ich habe hier ein kleines formatierungsproblem. der folgende teil ist scheinbar nicht richtig formatiert. Kann mir jemand einen tipp geben? Vielen Dank :)

echo '<li><?=$a["spalte1"]?></li>';

hier der "gesamte" code:

<?php  
  
  
if (empty($a['spalte1'])) {  
  
}  
  
else  
    {  
    echo '<li><?=$a["spalte1"]?></li>';  
}  
?>
  1. Hi,

    ich habe hier ein kleines formatierungsproblem.

    Wenn Dir jemand bei der Lösung des Problems helfen soll, dann solltest Du es auch beschreiben.

    echo '<li><?=$a["spalte1"]?></li>';

    Wieso machst Du mitten im PHP-Code einen PHP-Bereich auf?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
  2. Hallo,

    naja, du solltest schon wissen, dass Variablen mit einfachen Hochkommas nicht ausgespuckt werden und sowieso auf echo zur Ausgabe von html-Code verzichten und stattdessen alternative Syntax (heißt so) nehmen:

      
    <?php if($foo):?>  
    <p>hier ist was drinn, den foo ist:<?php echo $foo?></p>  
    <?php endif?>  
    
    

    Gruß

    jobo

    1. @@jobo:

      nuqneH

      und sowieso auf echo zur Ausgabe von html-Code verzichten

      und auch auf Short-Tags '<? ', '<?=', wie du ja auch in deinem Beispiel zeigtest.

      Auf die schließenden Semikolons würde ich allerdings nicht verzichten:

      <?php [code lang=php]if($foo): ?>
      <p>hier ist was drin, denn foo ist:<?php echo $foo; ?></p>
      <?php endif; ?>[/code]

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
      1. @@Gunnar Bittersmann:

        nuqneH

        Auf die schließenden Semikolons würde ich allerdings nicht verzichten:

        Argl, auf das Leerzeichen auch nicht:

        <?php [code lang=php]if ($foo): ?>[/code]
                ▲

        So eine Schande.

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. Om nah hoo pez nyeetz, Gunnar Bittersmann!

          Argl, auf das Leerzeichen auch nicht:

          <?php [code lang=php]if ($foo): ?>[/code]

          mir ist schon klar, dass man so die Syntax für einen Funktionsaufruf hat, aber mein PHP macht das mit und ohne Leerzeichen richtig.

          * Zufall?
          * ist mein Beispiel zu einfach konstruiert?
          * ist das Leerzeichen Pflicht?

          Matthias

          --
          1/z ist kein Blatt Papier.

          1. Hi,

            Argl, auf das Leerzeichen auch nicht:
            <?php [code lang=php]if ($foo): ?>[/code]
            mir ist schon klar, dass man so die Syntax für einen Funktionsaufruf hat, aber mein PHP macht das mit und ohne Leerzeichen richtig.

            mit einem Funktionsaufruf hat das if-Statement aber nichts gemeinsam - außer vielleicht, dass der für die Fallunterscheidung relevante Ausdruck ebenso in Klammern stehen muss wie ein Funktionsargument.

            * Zufall?
            * ist mein Beispiel zu einfach konstruiert?
            * ist das Leerzeichen Pflicht?

            Kein Zufall. Nach Keywords wie if, while, switch und ähnlichen muss kein Leerzeichen stehen. Ich würde es aber der Lesbarkeit wegen trotzdem empfehlen.

            Ciao,
             Martin

            --
            Ein Theoretiker ist ein Mensch, der praktisch nur denkt.
            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
            1. Om nah hoo pez nyeetz, Der Martin!

              mit einem Funktionsaufruf hat das if-Statement aber nichts gemeinsam - außer vielleicht, dass der für die Fallunterscheidung relevante Ausdruck ebenso in Klammern stehen muss wie ein Funktionsargument.

              schon klar.

              Kein Zufall. Nach Keywords wie if, while, switch und ähnlichen muss kein Leerzeichen stehen. Ich würde es aber der Lesbarkeit wegen trotzdem empfehlen.

              Ich setze auch immer eins, habe Gunnars Posting aber so verstanden, dass dort _zwingend_ eins hin müsste.

              Matthias

              --
              1/z ist kein Blatt Papier.

      2. Tach!

        und sowieso auf echo zur Ausgabe von html-Code verzichten
        und auch auf Short-Tags '<? ', '<?=', wie du ja auch in deinem Beispiel zeigtest.

        Die Form <?= gehört seit der aktuellen Version zum nicht deaktivierbaren Inventar von PHP. Man muss also unterscheiden, ob man zu älteren Versionen kompatibel sein muss oder nicht. Viel wichtiger ist aber, den Ausgabewert gemäß dem Kontext zu behandeln.

        <p>hier ist was drin, denn foo ist: <?=htmlspecialchars($foo) ?></p>

        Auf die schließenden Semikolons würde ich allerdings nicht verzichten:

        Warum? Vor einem ?> ist ein Semikolon immer entbehrlich.

        dedlfix.

        1. @@dedlfix:

          nuqneH

          Viel wichtiger ist aber, den Ausgabewert gemäß dem Kontext zu behandeln.

          Wenn der Ausgabewert von außen kommt, natürlich. Wenn er ein String ist, der '<' oder '&' enthalten könnte, dann auch, wenn er von innnen kommt.

          Auf die schließenden Semikolons würde ich allerdings nicht verzichten:

          Warum? Vor einem ?> ist ein Semikolon immer entbehrlich.

          Aus demselben Grund, warum ich auch in JavaScript immer Semikolons setze, selbst wenn sie entbehrlich sind.

          Qapla'

          --
          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
          (Mark Twain)
          1. Om nah hoo pez nyeetz, Gunnar Bittersmann!

            Aus demselben Grund, warum ich auch in JavaScript

            und CSS

            immer Semikolons setze, selbst wenn sie entbehrlich sind.

            Matthias

            --
            1/z ist kein Blatt Papier.

            1. Hallo,

              Om nah hoo pez nyeetz, Gunnar Bittersmann!

              Aus demselben Grund, warum ich auch in JavaScript

              und CSS

              immer Semikolons setze, selbst wenn sie entbehrlich sind.

              Matthias

              Naja, es hängt am Coding-Standard und daran, welchen Fehler man u.U. produziert (bei Javascript kann das verheerend sein!).

              http://framework.zend.com/manual/de/zend.view.introduction.html

              "In our examples, we make use of PHP long tags: <?php. We also favor the use of » alternate syntax for control structures. These are convenient shorthands to use when writing view scripts, as they make the constructs more terse, keep statements on single lines, and eliminate the need to hunt for brackets within HTML.

              In previous versions, we often recommended using short tags (<? and <?=), as they make the view scripts slightly less verbose. However, the default for the php.ini short_open_tag setting is typically off in production or on shared hosts -- making their use not terribly portable. If you use template XML in view scripts, short open tags will cause the templates to fail validation. Finally, if you use short tags when short_open_tag is off, the view scripts will either cause errors or simply echo PHP code back to the viewer."

              Gruß

              jobo

        2. Hallo,

          Tach!

          und sowieso auf echo zur Ausgabe von html-Code verzichten
          und auch auf Short-Tags '<? ', '<?=', wie du ja auch in deinem Beispiel zeigtest.

          Die Form <?= gehört seit der aktuellen Version zum nicht deaktivierbaren Inventar von PHP. Man muss also unterscheiden, ob man zu älteren Versionen kompatibel sein muss oder nicht.

          http://asoke.wordpress.com/2012/01/06/short-open-tags-will-be-removed-in-php-6/

          aber mit PHP6 dann "deprecated"?

          Gruß

          jobo

          1. Tach!

            Die Form <?= gehört seit der aktuellen Version zum nicht deaktivierbaren Inventar von PHP. Man muss also unterscheiden, ob man zu älteren Versionen kompatibel sein muss oder nicht.
            http://asoke.wordpress.com/2012/01/06/short-open-tags-will-be-removed-in-php-6/
            aber mit PHP6 dann "deprecated"?

            Das glaube ich nicht. Woher hat der seine Information? Schau mal, wie lange bei PHP Änderungen angekündigt werden, bevor sie endgültig umgesetzt werden: Bei Magic Quotes und Register Globals wird seit Version Version 4.2 darüber gesprochen, dass sie abgeschaltet werden sollen. Dabei wurde lediglich für register_globals der Default-Wert auf 0/off gesetzt. Das Handbuch sagt derzeit, dass beide Features seit 5.3 deprecated sind, wobei ich dachte, dass sie das schon länger wären. Erst mit Version 6 sollten sie fallen. Da die sich verzögert, fallen sie schon mit 5.4. Viele 5.x-Versionen bis 6 werden schätzungsweise nicht mehr kommen. Und diese Zeit ist ziemlich knapp für ein Feature, das nicht annähernd so bedeutend wie diese beiden ist. Ich sehe auch keine technische Notwendigkeit, dieses Feature zu streichen. Die echo-Form <?= kollidiert nicht mit dem <?xml. Ich begrüße es sehr, dass man sich von nun an auf das Vorhandensein dieser Form verlassen kann.

            Der Zend-Framwork-Coding-Standard und der für ähnliche Frameworks muss hier immer noch restriktiver/konservativer sein, ansonsten müsste man jetzt schon 5.4 als Mindestversion voraussetzen.

            dedlfix.