it-swarm.com.de

Wie kann ich HTML in PHP wiedergeben?

Ich möchte HTML bedingt ausgeben, um eine Seite zu generieren. Wie kann ich also am einfachsten mehrzeilige HTML-Ausschnitte in PHP 4+) ausgeben? Muss ich ein Template-Framework wie Smarty verwenden?

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";
114
Robinicks

Es gibt verschiedene Möglichkeiten, HTML in PHP wiederzugeben.

1. Zwischen PHP tags

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

2. In einem Echo

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

Wenn Sie in Ihrem HTML-Code doppelte Anführungszeichen verwenden möchten, müssen Sie bei Echos Echos in einfachen Anführungszeichen wie folgt verwenden:

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

Oder du kannst ihnen so entkommen:

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

3. Heredocs

4. Nowdocs (ab PHP 5.3.0)

Template-Engines werden für die Verwendung von PHP in Dokumenten verwendet, die hauptsächlich HTML enthalten. Tatsächlich sollte PHP ursprünglich dazu dienen Aus diesem Grund können Sie mit PHP) beispielsweise kurze Tags verwenden, um Variablen wiederzugeben (z. B. <?=$someVariable?>).

Es gibt andere Template-Engines (wie Smarty, Twig usw.), die die Syntax noch präziser gestalten (z. B. {{someVariable}}).

Der Hauptvorteil der Verwendung einer Vorlagen-Engine besteht darin, dass das Design (Presentation Logic) von der Codierung (Business Logic) getrennt bleibt. Außerdem wird der Code auf lange Sicht übersichtlicher und leichter zu warten.

Wenn Sie weitere Fragen haben, können Sie gerne einen Kommentar hinterlassen. Weiterführende Informationen zu diesen Themen finden Sie in der PHP-Dokumentation .

Gott segne!


HINWEIS: PHP= short tags <? Und ?> Werden nicht empfohlen, da dies der Fall ist Nur verfügbar, wenn mit der Direktive short_open_tag php.ini-Konfigurationsdatei aktiviert oder wenn PHP mit der Option --enable-short-tags konfiguriert wurde. Sie sind verfügbar, unabhängig von den Einstellungen ab 5.4 .

256
Chris Bier

versuche es so:

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

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

Sie könnten die alternative Syntax alternative Syntax für Kontrollstrukturen verwenden und aus PHP ausbrechen:

<?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; ?>
29
Tom Haigh

Grundsätzlich können Sie HTML außerhalb von PHP Tags einfügen. Es ist auch sehr vorteilhaft, alle erforderlichen Daten zu verarbeiten, bevor Sie Daten anzeigen, um Logik und Präsentation zu trennen.

Die Datenanzeige selbst kann sich am Ende derselben PHP Datei befinden, oder Sie können eine separate PHP Datei einfügen, die hauptsächlich aus HTML besteht.

Ich bevorzuge diesen kompakten Stil:

<?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: Möglicherweise müssen Sie <?php echo $var; ?> anstatt <?=$var?> abhängig von Ihrem PHP setup.

15
DisgruntledGoat

Ich bin an diesem Stil interessiert:

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

Ja, ich verwende Tags im ASP-Stil. Das Verschmelzen von PHP und HTML sieht für meine Augen gut lesbar aus. Der Trick besteht darin, das <% und %> Marker genau richtig.

7
John Kugelman

Ein anderer Ansatz besteht darin, den HTML-Code in einer separaten Datei abzulegen und den zu ändernden Bereich in diesem Fall mit einem Platzhalter [[content]] zu markieren. (Sie können auch sprintf anstelle von 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 einfach das gesamte PHP-Material auf dem Bildschirm ausgeben, der in einem Puffer gespeichert ist, dann das HTML schreiben und die PHP-Ausgabe wieder auf der Seite ablegen.

Es mag seltsam erscheinen, das PHP auszuschreiben, es abzufangen und dann erneut zu schreiben, aber es bedeutet, dass Sie alle Arten von Formatierungsaufgaben (Heredocs usw.) ausführen und die Ausgabe korrekt testen können, ohne dass der Aufwand für die Seitenvorlage zunimmt der Weg. (Joomla CMS macht das übrigens so) 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
7
julz
$enter_string = '<textarea style="color:#FF0000;" name="message">EXAMPLE</textarea>';

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

Versuchen Sie dies kann Ihnen helfen .......

<?php
echo <<<HTML

your html tags here

HTML;
?>
2
edCoder

Zusätzlich zu Chris B's Antwort, wenn Sie echo trotzdem verwenden müssen, möchten Sie es dennoch einfach und strukturiert halten und den Code nicht mit <?php stuff; ?> können Sie die folgende Syntax verwenden.

Sie möchten beispielsweise die Bilder einer Galerie anzeigen:

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 verwendet mehrere Parameter, so dass es bei gutem Einrücken ziemlich gut aussieht. Auch die Verwendung von echo mit Parametern ist effektiver als das Verketten.

1
totymedli

hTML nicht ausgeben

wenn du verwenden willst

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

das solltest du machen:

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

Verwenden Sie einfach die Funktion print, um den Text in der Datei PHP) wie folgt auszugeben

<?php

  print('

    <div class="wrap">

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

    </div>


  ')

?>
1
Code Spy
echo '
<html>
<body>
</body>
</html>
';

oder

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