Question

Je veux conditionnellement sortie HTML pour générer une page, alors quelle est la meilleure façon de faire écho extraits multilignes de HTML en PHP 4+? Est-ce que je dois utiliser un cadre de modèle comme Smarty?

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";
Était-ce utile?

La solution

Il y a quelques façons d'écho HTML en PHP.

1. Entre les deux balises PHP

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

2. Dans un écho

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

Avec echos, si vous souhaitez utiliser des guillemets dans votre code HTML, vous devez utiliser echos guillemets simples comme ceci:

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

Ou vous pouvez leur échapper comme ceci:

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

3. Heredocs

4. Nowdocs (PHP 5.3.0)

moteurs Modèle sont utilisés pour l'utilisation de PHP dans les documents qui contiennent la plupart du temps HTML. En fait, le but initial de PHP devait être un langage de templates. Voilà pourquoi avec PHP, vous pouvez utiliser des choses comme des balises courtes pour faire écho des variables (par exemple <?=$someVariable?>).

Il existe d'autres moteurs de modèle (tels que Smarty, Brindille, etc.) qui rendent la syntaxe plus concise (par exemple {{someVariable}}).

Le principal avantage d'utiliser un moteur de template maintient la conception (Présentation logique) séparée du codage (Business Logic). Il rend également le code plus propre et plus facile à maintenir à long terme.

Si vous avez d'autres questions ne hésitez pas à laisser un commentaire. Pour en savoir plus est disponible sur ces choses dans le PHP Documentation .

Que Dieu vous bénisse!


Remarque: balises courtes PHP <? et ?> sont découragés parce qu'ils ne sont disponibles que si elle est activée à la directive du fichier de configuration php.ini short_open_tag, ou si PHP a été configuré avec l'option --enable-short-tags. Ils sont disponibles, quels que soient les paramètres de 5.4 partir.

Autres conseils

essayer comme ceci:

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

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

Vous pouvez utiliser la autre syntaxe syntaxe alternative pour les structures de contrôle et sortir de 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; ?>

Fondamentalement, vous pouvez mettre HTML en dehors des balises partout PHP. Il est également très bénéfique de faire tout votre traitement de données nécessaires avant d'afficher toutes les données, afin de logique et une présentation.

L'affichage de données lui-même pourrait être au fond du même fichier PHP ou vous pouvez inclure un fichier PHP séparé composé essentiellement HTML.

Je préfère ce style compact:

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

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

Remarque: vous en fonction de votre configuration PHP devrez peut-être utiliser <?php echo $var; ?> au lieu de <?=$var?>

.

Je suis en partie à ce style:

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

J'utilise balises ASP, oui. Le mélange de PHP et HTML lisible par l'air super à mes yeux. L'astuce consiste à obtenir le <% et les marqueurs de %> juste à droite.

Une autre approche est de mettre le HTML dans un fichier séparé et marquer la zone à modifier avec un espace réservé [contenu []] dans ce cas. (Vous pouvez également utiliser sprintf au lieu du str_replace.)

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

Sinon, vous pouvez juste sortie tous les trucs de php à l'écran capturé dans un tampon, puis écrire le code html, puis mettre la sortie php de nouveau dans la page.

Il peut sembler étrange d'écrire le php sur, l'attraper, puis écrire à nouveau, mais cela ne signifie pas que vous pouvez faire toutes sortes de formatage des choses (Heredoc etc), et tester sorties correctement, sans les tracas de la page modèle obtenant de la manière. (CMS Joomla, il fait de cette façon, d'ailleurs) à-dire:

<?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

Essayez ceci peut vous aider .......

<?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 ) );

ne pas l'écho sur HTML

si vous voulez utiliser

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

vous devriez faire ceci:

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

Utilisez simplement Imprimer fonction écho texte dans le fichier PHP comme suit

<?php

  print('

    <div class="wrap">

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

    </div>


  ')

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

ou

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

Voici comment je le fais:

<?php if($contition == true){ ?>
         <input type="text" value="<?php echo $value_stored_in_php_variable; ?>" />
<?php }else{ ?>
         <p>No input here </p>
<?php } ?>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top