Je souhaite générer une sortie HTML conditionnelle 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";
Réponses:
Il existe plusieurs façons de faire écho au HTML en PHP.
1. Entre les balises PHP
2. Dans un écho
Avec les échos, si vous souhaitez utiliser des guillemets doubles dans votre HTML, vous devez utiliser des échos de guillemets simples comme ceci:
Ou vous pouvez leur échapper comme ceci:
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, l'objectif initial de PHP était d'être un langage de création de modèles. C'est 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è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 modèle est de séparer la conception ( logique de présentation ) du codage ( logique métier ). Cela rend également le code plus propre et plus facile à maintenir à long terme.
Si vous avez d'autres questions, n'hésitez pas à laisser un commentaire.
Des lectures complémentaires sont disponibles sur ces choses dans la documentation PHP .
REMARQUE: les balises PHP courtes
<?
et?>
déconseillées car elles ne sont disponibles que si elles sont activées avec lashort_open_tag
directive de fichier de configuration php.ini, ou si PHP a été configuré avec l'--enable-short-tags
option. Ils sont disponibles, quels que soient les paramètres à partir de la version 5.4 .la source
<?=$var?>
. Les balises courtes sont déconseillées comme d'habitude et doivent être supprimées (<? doStuff() ?>
).Essayez-le comme ceci ( syntaxe heredoc ):
la source
<?php $variable = "bla"; ?> <html> <body class="<?php echo $variable ?>"> </body> </html>
j'avais l' habitude de voir une syntaxe comme --- Donc, je pensais qu'il manquait un tas de crochets et je ne savais pas où ils allaient exactement. C'est toujours drôle quand on répond à mes commentaires un peu plus anciens, car j'étais tellement nouveau dans tout cela à l'époque.Vous pouvez utiliser la syntaxe alternative de syntaxe alternative pour les structures de contrôle et sortir de PHP:
la source
En gros, vous pouvez placer du HTML n'importe où en dehors des balises PHP. Il est également très avantageux de faire tous vos 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 être au bas du même fichier PHP ou vous pouvez inclure un fichier PHP séparé composé principalement de HTML.
Je préfère ce style compact:
Remarque: vous devrez peut-être utiliser
<?php echo $var; ?>
au lieu de<?=$var?>
dépendre de votre configuration PHP.la source
Je suis friand de ce style:
J'utilise des balises de style ASP, oui. Le mélange de PHP et HTML semble super lisible à mes yeux. L'astuce consiste à obtenir les marqueurs
<%
et%>
juste.la source
Une autre approche consiste à placer le HTML dans un fichier séparé et à marquer la zone à modifier avec un espace réservé [[content]] dans ce cas. (Vous pouvez également utiliser sprintf au lieu de str_replace.)
Alternativement, vous pouvez simplement afficher tous les éléments PHP sur l'écran capturé dans un tampon, écrire le HTML et remettre la sortie PHP dans la page.
Cela peut sembler étrange d'écrire le PHP, de l'attraper, puis de le réécrire, mais cela signifie que vous pouvez faire toutes sortes de choses de formatage ( heredoc , etc.), et le tester correctement sans les tracas de la page modèle qui gêne. (Le CMS Joomla le fait de cette façon, BTW.)
C'est à dire:
la source
Utilisez simplement la fonction d' impression pour faire écho au texte dans le fichier PHP comme suit:
la source
la source
En plus de la réponse de Chris B , si vous devez
echo
quand même l' utiliser , vous voulez toujours la garder simple et structurée et ne pas envoyer de spam avec le code<?php stuff; ?>
's, vous pouvez utiliser la syntaxe ci-dessous.Par exemple, vous souhaitez afficher les images d'une galerie:
Echo prend plusieurs paramètres, donc avec une bonne indentation, il semble plutôt bon. L'utilisation
echo
avec des paramètres est également plus efficace que la concaténation.la source
ou
la source
Essaye ça:
la source
Ne faites pas écho au HTML.
Si vous souhaitez utiliser
vous devriez faire ceci:
la source
Voici comment je fais:
la source