2009-11-10 10 views
1

Je commence à travailler avec les bases de php et j'ai du mal à comprendre comment mélanger le code avec les chaînes.Erreur de syntaxe PHP T_ENCAPSED_AND_WHITESPACE

J'ai trouvé un style génial et utile pour imprimer des blocs de chaînes mais je ne connais pas le nom et je ne trouve pas d'exemples.

le code ci-dessous me renvoie l'erreur:
Parse error: syntax error, T_ENCAPSED_AND_WHITESPACE inattendue, attendant T_STRING ou T_VARIABLE ou T_NUM_STRING dans /web/htdocs/food/user/index.php en ligne 120

<?php 
$html_str = <<<STR 
    <li><img alt="hello" src="$path_images/pencil.png"/><a title="hello" href="$path_pages/$page/action">Details</a></li> 

STR; 
print $html_str; 
?> 

quelqu'un peut-il m'aider à trouver où je me trompe et le nom de ce style de syntaxe?

merci v

+0

Fonctionne bien pour moi – Greg

Répondre

3

J'ai trouvé le problème!
dans l'exemple que je l'ai posté il ne peut pas renvoyer l'erreur:

Code de travail

<?php 
$str = <<<STRING 
hello! this is a working string<br/> 
and i can do too many things with heredoc syntax! 
STRING; 

print $str; 
?> 

Non Code de travail

<?php 
    $str = <<<STRING 
    syntax error!<br/> 
    syntax error!<br/> 
    why? 
    STRING; 

    print $str; 
?> 

Le problème sont les onglets avant l'étiquette de fermeture STRING; qui sont considérés comme faisant partie de la balise, donc la balise de fermeture n'est pas interprétée "STRING;" mais "                STRING;", c'est pourquoi cela ne fonctionne pas.

espérons qu'il soit utile pour quelqu'un d'autre.

+0

http://www.codinghorror.com/blog/archives/001310.html –

1

Le nom de la syntaxe est HEREDOC strings ou "ici les documents". Mais quand j'exécute votre code sur mon serveur, je ne reçois pas les erreurs de jeton que vous faites, cependant. Peut-être que votre erreur est en fait ailleurs?

+0

merci pour votre test, j'ai essayé avec quelque chose de plus facile comme ça mais le serveur me renvoie la même erreur ... $ str = <<< STR bonjour STR; print $ str; peut-il être un module manquant dans le serveur? merci encore – vitto

+0

et merci pour le nom de la syntaxe! – vitto

+0

oui, j'essaye le code sur le serveur aruba.it, mais il devrait avoir tous les composants de base php ... je ferai une recherche! – vitto