2011-03-28 4 views
1

Je suis un peu confus en ce moment. J'ai ce code:PHP embarqué, ne peut pas arrêter?

<?php $this->head(?> 
    <style type="text/css"> 
     .error { 
      background-color: #ccc; 
      border: 1px solid #999; 
      padding: 10px; 
      width: 500px; 
     } 
    </style> 
<?php); ?> 

J'étais assez sûr que vous pourriez faire ceci. Il est assez similaire à:

<?php if (true) { ?> 
    Hei 
<?php } ?> 

En fait une erreur se produit:

Parse error: syntax error, unexpected ';', expecting ')' in file.php on line 1 (line 1 of the code)

Comment puis-je mieux le réparer?

+1

Avez-vous des balises PHP activées? – diagonalbatman

+1

Qu'essayez-vous d'accomplir? Est-ce supposé être une déclaration conditionnelle ou essayez-vous d'attribuer une valeur à $ this-> head? –

Répondre

10

Si vous essayez de transmettre le html en tant que variable, utilisez heredoc.

$var = <<<HTML 
    <style type="text/css"> 
    .error { 
     background-color: #ccc; 
     border: 1px solid #999; 
     padding: 10px; 
     width: 500px; 
    } 
    </style> 
HTML; 

$this->head($var); 

Vous ne pouvez pas le faire:

$variable = ?> <p>omgwtfbbq</p> <?; 

C'est juste n'est pas une syntaxe valide.

Insead, vous pouvez l'entourer de guillemets (simple ou double)

$variable = "<p>omgwtfbbq</p>"; 
+0

@Briedis, y a-t-il une raison d'éviter HEREDOC? Je suis sûr que j'ai lu quelque part que HEREDOC est diabolique ou quelque chose ... est-ce juste ou je peux l'utiliser sans idée? – Shoe

+2

En fait, je n'ai pas utilisé heredoc dans un vrai projet, je ne peux pas me souvenir de la syntaxe quand j'essaie de l'utiliser, à la place je vais chercher des citations :) Je ne sais pas ce qui est mal, mais il y avait quelques inconvénients. Edit: a creusé un peu et voici quelques [avantages et inconvénients] (http://aaronsaray.com/blog/2008/09/08/heredoc-time-for-dead-dead-or-happy-smile-time/) –

+0

@Briedis, il n'a pas résolu rien. La syntaxe en surbrillance de mon éditeur la voit toujours sous forme de chaîne. Merci quand même. – Shoe

2

Utilisez un HEREDOC pour le texte multiligne.

<?php 
$style = <<<EOS 

    <style type="text/css"> 
     .error { 
      background-color: #ccc; 
      border: 1px solid #999; 
      padding: 10px; 
      width: 500px; 
     } 
    </style> 
EOS; 
$this->head($style); 
?>