Georg Dürkop: HTML Code in PHP?

Ich habe vor ein E-Mail Formular mit PHP Auszulesen, um es dann an eine E-Mail zu versenden. Die E-Mail möchte ich gerne mit HTML formatieren, leider geht das nicht so einfach. Ich denke ein beispiel wird das Problem besser darstellen;

<?php
echo = "<h1 ALIGN="CENTER">Hallo Welt</h1>";
?>

In diesem Beispiel bekomme ich eine Fehlermeldung, weil ich keine Anführungsstriche in den PHP Befehlen haben darf. Dieses Problem kann einfach gelöst werden:

<?php
echo = "<h1 ALIGN="CENTER">Hallo Welt</h1>";
?>

So nun funktioniert die Positionierung. Das Problem ist nur wenn der HTML Code etwas complexer ist, wird es anstrengen '' zweichen for jedem Anführungsstrich zu machen.

Kann mir jemand sagen, wie ich das Problem Löse?

GRD

  1. Hallo!

    <?php
    echo = "<h1 ALIGN="CENTER">Hallo Welt</h1>";
    ?>

    So nun funktioniert die Positionierung. Das Problem ist nur wenn der HTML Code etwas complexer ist, wird es anstrengen '' zweichen for jedem Anführungsstrich zu machen.

    Verwende dann lieber ':

    echo ('Meine "Anführungszeichen" im PHP Code');

    Viele Grüße

    Andreas

  2. Hi,

    <?php
    echo = "<h1 ALIGN="CENTER">Hallo Welt</h1>";
    ?>

    Du kannst das Gleichheitszeichen weglassen.

    So nun funktioniert die Positionierung. Das Problem ist nur wenn der HTML Code etwas complexer ist, wird es anstrengen '' zweichen for jedem Anführungsstrich zu machen.

    Nun ja, du kannst entweder aus dem PHP-Tag aussteigen:

    <?
      if(Bedingung) {
    ?>
    <h1 style="text-align: center">Hallo Welt</h1>
    <? } ?>

    oder kannst beim echo-Befehl den String in Apostrophe fassen:

    <?
      echo '<h1 style="text-align: center">Hallo Welt</h1>';
    ?>

    Das hat dann allerdings den Nachteil, dass der String nicht ge-
    parsed wird, d.h. du kannst nicht

    <?
      $user = "Markus";
      echo '<h1 style="text-align: center">Hallo $user</h1>';
    ?>

    sondern musst

    <?
      $user = "Markus";
      echo '<h1 style="text-align: center">Hallo '.$user.'</h1>';
    ?>

    schreiben, um

    <h1 style="text-align: center">Hallo Markus</h1>

    zu erhalten.

    Hoffe, das war verständlich.

    Bye,
    Peter

    1. Hallo,

      Nun ja, du kannst entweder aus dem PHP-Tag aussteigen:

      <?
        if(Bedingung) {
      ?>
      <h1 style="text-align: center">Hallo Welt</h1>
      <? } ?>

      oder kannst beim echo-Befehl den String in Apostrophe fassen:

      <?
        echo '<h1 style="text-align: center">Hallo Welt</h1>';
      ?>

      Das hat dann allerdings den Nachteil, dass der String nicht ge-
      parsed wird, d.h. du kannst nicht

      <?
        $user = "Markus";
        echo '<h1 style="text-align: center">Hallo $user</h1>';
      ?>

      sondern musst

      <?
        $user = "Markus";
        echo '<h1 style="text-align: center">Hallo '.$user.'</h1>';
      ?>

      schreiben, um

      <h1 style="text-align: center">Hallo Markus</h1>

      zu erhalten.

      All diese Möglichkeiten gehen, und außerdem ginge noch die Here-Doc-Syntax:

      echo <<<ENDE
      <h1 style="text-align: center">Hallo $user</h1>
      ENDE;

      Diese bietet sich vor allen Dingen bei längeren HTML-Passagen mit verstreuten Variablen darin an.
      Der größte Nachteil ist, daß eine ggf. vorhandene Struktur im PHP-Quelltext (optisch) gestört wird,
      weil die Endmarke (hier: ENDE) unbedingt ganz links stehen muß.

      Schönen Gruß

      Rainer

  3. Hallo Georg,
    drei Tipps kann ich dir auch noch geben

    <?php echo = "<h1 ALIGN="CENTER">Hallo Welt</h1>"; ?>

    ^ echo "";

    So nun funktioniert die Positionierung. Das Problem ist nur wenn der HTML Code etwas complexer ist, wird es anstrengen '' zweichen for jedem Anführungsstrich zu machen.

    Kann mir jemand sagen, wie ich das Problem Löse?

    Wenn ich grosse HTML-bloecke habe schreib ich diese erst mal als
    HTML-Datei und seh mir diese dann an. Danach ersetzte ich alle "
    mit ". Das ist gut fuer ein paar Zeilen.

    Oder je nach laenge kanst du auch mal ueber EOF (end of file)
    nachdenken.

    echo <<<END
    This uses the "here document" syntax to output
    multiple lines with $variable interpolation. Note
    that the here document terminator must appear on a
    line with just a semicolon no extra whitespace!
    END;

    gruesse
      jens mueller

  4. Hi!

    Hm, ich glaube, Ihr habt ihn falsch verstanden. So wie ich das sehe, will er keinen HTML-Code ausgeben, sondern eine HTML-formatierte Mail zusammensetzen...

    <?php
    echo = "<h1 ALIGN="CENTER">Hallo Welt</h1>";
    ?>

    ...und dann wäre hier das Gleicheitszeichen kein Fehler, nur muss dann vor dem echo ein $ stehen.

    So nun funktioniert die Positionierung. Das Problem ist nur wenn der HTML Code etwas complexer ist, wird es anstrengen '' zweichen for jedem Anführungsstrich zu machen.

    Entweder mit dem schon angesprochenen ', ansonsten vielleicht durch ein Template in einer Datei, aber das wäre mit Kanonen auf Spatzen geschossen.

    VG Simon