2010-10-19 4 views
0

Comment mettre htmlcode dans la syntaxe heredoc. Avec ce HTML je pourrais avoir des variables PHP doit être interprété et certains PHP boucles besoins à exécuter .Comment dois-je faire tout cela peut-on montrer un exemplepeut-on montrer comment mettre HTML dans Heredoc Syntaxe

$con = <<<EOC 
<style type="text/css"> 
.tddata {color:#330000;border-width:0px;font-family:Arial;font-size:12pt;font-weight:bold} 
.tdheading {color:#FF0000;border-width:0px;font-family:Arial;font-size:12pt;font-weight:bold"} 
</style> 
</head> 
<table border="0" width="500"> 
<tr> 
    <td colspan ="5" style="color:#FF0000;border-width:0px;font-family:Arial;font-size:12pt;font-weight:bold" nowrap>{ $_REQUEST ['SOMEPHP']; }</td> 
    <td style="color:#FF0000;border-width:0px;font-family:Arial;font-size:12pt;font-weight:bold" nowrap>This report was created on <?php echo (date('d-M-Y')?></td> 
</tr> 
</table> 

<table border="1" width="700"> 
<tr> 
<td class="tddata" bgcolor="#808080" colspan="1">Mode</td> 
<td class="tddata" bgcolor="#808080"><?php echo $_POST['MODE'] ;?></td> 
<td class="tddata" bgcolor="#808080">Type</td> 
<td class="tddata" bgcolor="#808080" colspan="1"><?php echo $_POST['TYPE'] ;?></td> 
</tr> 
EOC 

Répondre

4

N'oubliez pas d'espace entre {et $ lors d'une substitution de variable. Et le terminateur HEREDOC (EOC dans votre cas) doit commencer sur la première colonne et se terminer par un point-virgule.

Essayez ceci:

$date = date('d-M-Y'); 
$con = <<<EOC 
    <style>...</style> 
    </head> 
    <table border="0" width="500"> 
    <tr> 
    <td colspan ="5" style="..." nowrap>{$_REQUEST['SOMEPHP']}</td> 
    <td style="..." nowrap>This report was created on {$date}</td> 
    </tr> 
    </table> 

    <table border="1" width="700"> 
    <tr> 
    <td class="tddata" bgcolor="#808080" colspan="1">Mode</td> 
    <td class="tddata" bgcolor="#808080">{$_POST['MODE']}</td> 
    <td class="tddata" bgcolor="#808080">Type</td> 
    <td class="tddata" bgcolor="#808080" colspan="1">{$_POST['TYPE']}</td> 
    </tr> 
EOC; 

// loop example 
for ($i=0; $i < 10; $i++) { 
    $con .= <<<EOC 
     <p>{$i}</p> 
EOC; 
+0

d'accord avec ci-dessus que si vous faites de grands HEREDOCs dans votre PHP, il peut être préférable de simplement passer en mode PHP à la place. – gregjor

+0

@Someone comme indiqué par ** gregjor **, ce n'est sans doute pas le meilleur moyen de le faire. Bien que ce soit la réponse à cette question spécifique, je ne vous recommande pas d'écrire votre PHP comme ça. –

3

Pour les variables, il suffit d'utiliser la même syntaxe que pour les chaînes entre guillemets. Pour les boucles, vous devrez le diviser en plusieurs heredocs avec du code PHP entre chaque.

4

Les boucles ne peuvent pas être réalisées dans un HEREDOC. Cependant, les variables sont interprétées comme elles le seraient entre guillemets. Découvrez the manual.

Cela dit. Si vous voulez sortir un tas de code - variables, tags et boucles - je suggère de regarder output buffering.

Ou tout simplement avoir votre HTML en dehors de vos blocs PHP.

+0

+1 pour la remarque de mise en mémoire tampon de sortie. L'utilisation de ob_start, ob_get_clean et de la syntaxe standard est une alternative plus simple à ce que vous essayez de faire. –

+0

@Victor Merci. Bien que gentil, j'utilise rarement 'heredoc' et je pense que cela semble être le consensus de la communauté PHP. Au moins en juger par des projets open source à grande échelle - WordPress, Magento, CakePHP, etc. –

Questions connexes