web-dev-qa-db-fra.com

Comment puis-je faire écho au HTML en PHP?

Je souhaite sortir du code HTML sous condition pour générer une page. Alors, quel est le moyen le plus simple de faire écho à des extraits de code HTML multilignes dans PHP 4+? Aurais-je besoin d'utiliser un framework 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";
114
Robinicks

Il y a plusieurs façons de faire écho au HTML en PHP.

1. Entre PHP balises

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

2. Dans un écho

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

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

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

Ou vous pouvez leur échapper comme ceci:

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

3. Heredocs

4. Nowdocs (à partir de PHP 5.3.0)

Les moteurs de modèles sont utilisés pour utiliser PHP dans des documents contenant principalement du HTML. En fait, le but initial de PHP était d'être un langage de template. C'est pourquoi avec PHP, vous pouvez utiliser des choses telles que des balises courtes pour faire écho à des variables (par exemple <?=$someVariable?>).

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

Le principal avantage de l'utilisation d'un moteur de gabarit est de garder la conception (logique de présentation) distincte du codage (logique d'entreprise). Cela rend également le code plus propre et plus facile à gérer à long terme.

Si vous avez d'autres questions, n'hésitez pas à laisser un commentaire. Des lectures supplémentaires sont disponibles sur ces choses dans le Documentation PHP .

Dieu vous protège!


REMARQUE: PHP les balises courtes <? et ?> sont déconseillées car elles ne sont disponibles que si elles sont activées avec short_open_tag Directive du fichier de configuration php.ini, ou si PHP a été configuré avec l'option --enable-short-tags. Ils sont disponibles, quels que soient les paramètres à partir de 5.4 .

256
Chris Bier

essayez comme ça:

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

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

Vous pouvez utiliser le 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; ?>
29
Tom Haigh

En gros, vous pouvez mettre du HTML n'importe où en dehors des balises PHP. Il est également très avantageux d'effectuer tous les traitements de données nécessaires avant d'afficher des données, afin de séparer la logique et la présentation.

L’affichage des données lui-même peut se trouver au bas du même fichier PHP ou vous pouvez inclure un fichier séparé PHP composé principalement de 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 devrez peut-être utiliser <?php echo $var; ?> au lieu de <?=$var?> en fonction de votre configuration PHP.

15
DisgruntledGoat

Je suis partial à ce style:

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

J'utilise des balises de type ASP, oui. Le mélange de PHP et de HTML est très lisible à mes yeux. Le truc consiste à obtenir les marqueurs <% et %> juste.

7
John Kugelman

Une autre approche consiste à placer le code 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 de str_replace.)

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

Sinon, vous pouvez simplement afficher tous les éléments php sur l'écran capturé dans un tampon, puis écrire le code HTML, puis replacer la sortie php dans la page.

Cela peut sembler étrange d'écrire le php out, de l'attraper, puis de l'écrire à nouveau, mais cela signifie que vous pouvez faire toutes sortes de choses de formatage (Heredocs, etc.), et les tester correctement, sans les tracas du modèle de page. le chemin. (Joomla CMS le fait de cette façon, BTW) c'est-à-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
7
julz
$enter_string = '<textarea style="color:#FF0000;" name="message">EXAMPLE</textarea>';

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

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

<?php
echo <<<HTML

your html tags here

HTML;
?>
2
edCoder

En plus de Chris B answer, si vous avez quand même besoin d'utiliser echo, voulez toujours rester simple et structuré et ne voulez pas spammer le code avec <?php stuff; ?> ', vous pouvez utiliser la syntaxe ci-dessous.

Par exemple, vous souhaitez afficher les images d'une galerie:

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 prend plusieurs paramètres donc avec une bonne mise en retrait, ça a l'air plutôt bien. Également utiliser echo avec des paramètres est plus efficace que concaténer.

1
totymedli

ne pas faire écho à HTML

si vous voulez utiliser

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

vous devriez faire ceci:

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

Utilisez simplement la fonction print pour faire écho au texte dans le fichier PHP comme suit

<?php

  print('

    <div class="wrap">

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

    </div>


  ')

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

ou

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