Frage

Ich mag bedingt Ausgabe von HTML einer Seite zu generieren, so was ist der einfachste Weg, mehrzeilige Schnipsel von HTML in PHP 4+ Echo? Werde ich brauche ein Template-Frameworks wie Smarty benutzen?

echo '<html>', "\n"; // I'm sure there's a better way!
echo '<head>', "\n";
echo '</head>', "\n";
echo '<body>', "\n";
echo '</body>', "\n";
echo '</html>', "\n";
War es hilfreich?

Lösung

Es gibt ein paar Möglichkeiten, HTML in PHP Echo.

1. Zwischen den PHP-Tags

<?php if(condition){ ?>
     <!-- HTML here -->
<?php } ?>

2. In einem Echo

if(condition){
     echo "HTML here";
}

Mit echos, wenn Sie es wünschen doppelte Anführungszeichen in Ihrem HTML verwenden, müssen Sie Apostroph echos wie so verwenden:

echo '<input type="text">';

Sie können sie wie so entkommen:

echo "<input type=\"text\">";

3. Heredocs

4. NowDocs (ab PHP 5.3.0)

Template Engines sind für die Verwendung von PHP in Dokumenten verwendet, die meist HTML enthalten. In der Tat war PHP ursprünglicher Zweck eine Template-Sprache zu sein. Deshalb mit PHP Sie Dinge wie Kurz-Tags verwenden, können Variablen Echo (z <?=$someVariable?>).

Es gibt auch anderen Template-Engines (wie Smarty, Zweig, etc.), die die Syntax noch prägnante (z {{someVariable}}) zu machen.

Der primäre Vorteil der Verwendung einer Template-Engine das Design (Präsentation Logic) getrennt von der Codierung (Business Logic) hält. Es macht auch den Code sauberer und einfacher auf lange Sicht zu erhalten.

Wenn Sie weitere Fragen haben, fühlen sich frei, einen Kommentar zu hinterlassen. Weiterführende Literatur ist auf diese Dinge in der PHP Dokumentation zur Verfügung.

God Bless!


Hinweis: PHP Short Tags <? und ?> entmutigt werden, weil sie nur zur Verfügung, wenn mit short_open_tag Konfigurationsdatei php.ini-Richtlinie aktiviert ist, oder wenn PHP mit der --enable-short-tags Option konfiguriert. Sie sind, unabhängig von den Einstellungen ab 5.4 ab .

Andere Tipps

versuchen wie folgt aus:

$variable = <<<XYZ
<html>
<body>

</body>
</html>
XYZ;
echo $variable;

könnten Sie verwenden die alternative Syntax alternative Syntax für Kontrollstrukturen und brechen aus php:

<?php if ($something): ?>
    <some /> <tags /> <etc />
    <?=$shortButControversialWayOfPrintingAVariable ?>
    <?php /* A comment not visible in the HTML but is a bit of a pain to write */ ?>
<?php else: ?>
    <!-- else -->
<?php endif; ?>

Grundsätzlich können Sie HTML außerhalb von PHP-Tags setzen überall. Es ist auch sehr vorteilhaft alle notwendige Datenverarbeitung zu tun, bevor alle Daten, um eine getrennte Logik und Präsentation angezeigt wird.

Die Datenanzeige selbst am unteren Rand der gleichen PHP-Datei sein könnte oder Sie könnten eine separate PHP-Datei enthalten meist HTML aus.

Ich ziehe diese kompakte Bauweise:

<?php
    /* do your processing here */
?>

<html>
<head>
    <title><?=$title?></title>
</head>
<body>
    <?php foreach ( $something as $item ) : ?>
        <p><?=$item?></p>
    <?php endforeach; ?>
</body>
</html>

Hinweis: Sie können <?php echo $var; ?> statt <?=$var?> je nach PHP-Konfiguration verwenden müssen

.

Ich bin teilweise zu dieser Art:

  <html>
    <head>
<%    if (X)
      {
%>      <title>Definitely X</title>
<%    }
      else
      {
%>      <title>Totally not X</title>
<%    }
%>  </head>
  </html>

ich ASP-Tags verwenden, ja. Die Beimischung von PHP und HTML sieht super lesbar meine Augen. Der Trick ist, in immer die <% und %> Marker genau richtig.

Ein weiterer Ansatz ist der HTML-Code in einer separaten Datei setzen und den Bereich markiert, mit einem Platzhalter [[content]] ändert in diesem Fall. (Sie können sprintf auch anstelle des str_replace verwenden.)

$page = 'hello world';
$content = file_get_contents('html/welcome.html');
$pagecontent = str_replace('[[content]]',$content,$page);
echo($pagecontent);

Alternativ können Sie nur Ausgabe der alle PHP-Zeug auf die in einem Puffer aufgenommene Bild, schreiben Sie dann die html, dann die PHP-Ausgabe in die Seite stellen.

Es mag seltsam erscheinen die PHP heraus, fangen sie zu schreiben, dann schreiben Sie es noch einmal, aber es bedeutet, dass Sie alle Arten Sachen Formatierung tun können (Heredocs etc), und testen Sie es gibt richtig ohne lästiges der Seite Vorlage in die Quere. (Joomla CMS macht es auf diese Weise, BTW) dh:

<?php
ob_start();
echo('hello world');
$php_output = ob_get_contents();
ob_end_clean();
?>
<h1> My Template page says </h1>
<?php
echo($php_output );
?>
<hr>
template footer

Try This Ihnen helfen können .......

<?php
echo <<<HTML

your html tags here

HTML;
?>
$enter_string = '<textarea style="color:#FF0000;" name="message">EXAMPLE</textarea>';

echo( 'Echo as HTML' . htmlspecialchars( (string)$enter_string ) );

Neben Chris B Antwort, wenn Sie echo sowieso verwenden müssen, will immer noch halten es einfach und strukturiert und will nicht den Code mit <?php stuff; ?> der Spam, können Sie die Syntax unten.

Zum Beispiel möchten Sie die Bilder einer Galerie angezeigt werden:

foreach($images as $image)
{
    echo
    '<li>',
        '<a href="', site_url(), 'images/', $image['name'], '">',
            '<img ',
                'class="image" ',
                'title="', $image['title'], '" ',
                'src="', site_url(), 'images/thumbs/', $image['filename'], '" ',
                'alt="', $image['description'], '"',
            '>',
        '</a>',
    '</li>';
}

Echo nimmt mehrere Parameter so mit gutem Einrücken sieht es ziemlich gut. Auch mit echo mit Parametern ist effektiver als verketten.

nicht echo HTML

Wenn Sie verwenden möchten

<?php echo "<h1>  $title; </h1>"; ?>

Sie sollten dies tun:

<h1><?= $title;?></h1>

Verwenden Sie einfach Drucken Funktion Text in PHP-Datei wie folgt echo

<?php

  print('

    <div class="wrap">

      <span class="textClass">TESTING</span>

    </div>


  ')

?>
echo '
<html>
<body>
</body>
</html>
';

oder

echo "<html>\n<body>\n</body>\n</html>\n";

Das ist, wie ich es tun:

<?php if($contition == true){ ?>
         <input type="text" value="<?php echo $value_stored_in_php_variable; ?>" />
<?php }else{ ?>
         <p>No input here </p>
<?php } ?>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top