T_ENCAPSED_AND_WHITESPACED is returned when parsing strings with evaluated content, like "some $value" or this example from the Strings reference page:
<?php
echo <<<EOT
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should print a capital 'A': \x41
EOT;
?>
This last example is tokenized as:
T_ECHO
echo
T_WHITESPACE
%20 (a space character)
T_START_HEREDOC
<<
T_ENCAPSED_AND_WHITESPACE
My name is "
T_VARIABLE
$name
T_ENCAPSED_AND_WHITESPACE
". I am printing some
T_VARIABLE
$foo
T_OBJECT_OPERATOR
->
T_STRING
foo
T_ENCAPSED_AND_WHITESPACE
. Now, I am printing some
T_CURLY_OPEN
{
T_VARIABLE
$foo
T_OBJECT_OPERATOR
->
T_STRING
bar
(terminal)
[
T_LNUMBER
1
(terminal)
]
(terminal)
}
T_ENCAPSED_AND_WHITESPACE
. This should print a capital 'A': \x41
T_END_HEREDOC
EOT
(terminal)
;
Annexe Q. Liste des tokens de l'analyseur
De nombreuses parties du langage PHP sont représentées en interne par des tokens. Litéralement, ce sont des trucs, ou jetons. Ici, des briques de base, comme T_SR. PHP affiche des identifiants comme celui-ci dans les erreurs d'analyse, par exemple : unexpected T_SR, expecting ',' or ';' in script.php on line 10..
Vous êtes suppposé savoir ce que T_SR signifie. Pour ceux qui ne le savent pas, voici une liste de ces identifiants, la syntaxe PHP correspondante, et les références appropriées au manuel.
Tableau Q-1. Tokens
| Token | Syntaxe | Référence |
|---|---|---|
| T_ABSTRACT | abstract | la section intitulée Abstraction de classes dans Chapitre 19 (disponible depuis PHP 5.0.0) |
| T_AND_EQUAL | &= | opérateurs d'assignation |
| T_ARRAY | array() | array(), syntaxe de tableau |
| T_ARRAY_CAST | (array) | transtypage |
| T_AS | as | foreach |
| T_BAD_CHARACTER | Tous les caractères en dessous de ASCII 32 excepté \t (0x09), \n (0x0a) et \r (0x0d) | |
| T_BOOLEAN_AND | && | opérateurs logiques |
| T_BOOLEAN_OR | || | opérateurs logiques |
| T_BOOL_CAST | (bool) ou (boolean) | transtypage |
| T_BREAK | break; | break |
| T_CASE | case | switch |
| T_CATCH | catch | Chapitre 20 (disponible depuis PHP 5.0.0) |
| T_CHARACTER | ||
| T_CLASS | class | classes et objets |
| T_CLONE | clone | classes et objets. PHP 5 uniquement. |
| T_CLOSE_TAG | ?> ou %> | |
| T_COMMENT | // ou #, et /* */ en PHP 5 | commentaires |
| T_CONCAT_EQUAL | .= | opérateurs d'assignation |
| T_CONST | const | |
| T_CONSTANT_ENCAPSED_STRING | "foo" ou 'bar' | syntaxe chaîne de caractères |
| T_CONTINUE | continue | |
| T_CURLY_OPEN | ||
| T_DEC | -- | opérateurs d'incrémention/décrémention |
| T_DECLARE | declare | declare |
| T_DEFAULT | default | switch |
| T_DIV_EQUAL | /= | opérateurs d'assignation |
| T_DNUMBER | 0.12, etc. | nombres à virgule flottante |
| T_DOC_COMMENT | /** */ | style de commentaire dans la PHPDoc (PHP 5 uniquement) |
| T_DO | do | do...while |
| T_DOLLAR_OPEN_CURLY_BRACES | ${ | syntaxe de variable complexe analysée |
| T_DOUBLE_ARROW | => | syntaxe de tableau |
| T_DOUBLE_CAST | (real), (double) ou (float) | transtypage |
| T_DOUBLE_COLON | :: | Voyez T_PAAMAYIM_NEKUDOTAYIM plus bas |
| T_ECHO | echo | echo() |
| T_ELSE | else | else |
| T_ELSEIF | elseif | elseif |
| T_EMPTY | empty | empty() |
| T_ENCAPSED_AND_WHITESPACE | ||
| T_ENDDECLARE | enddeclare | declare, syntaxe alternative |
| T_ENDFOR | endfor | for, syntaxe alternative |
| T_ENDFOREACH | endforeach | foreach, syntaxe alternative |
| T_ENDIF | endif | if, syntaxe alternative |
| T_ENDSWITCH | endswitch | switch, syntaxe alternative |
| T_ENDWHILE | endwhile | while, syntaxe alternative |
| T_END_HEREDOC | syntaxe heredoc | |
| T_EVAL | eval() | eval() |
| T_EXIT | exit or die | exit(), die() |
| T_EXTENDS | extends | extends, classes et objets |
| T_FILE | __FILE__ | constantes |
| T_FINAL | final | la section intitulée Mot clé "final" dans Chapitre 19 (disponible depuis PHP 5.0.0) |
| T_FOR | for | for |
| T_FOREACH | foreach | foreach |
| T_FUNCTION | function or cfunction | fonctions |
| T_GLOBAL | global | scope de variable |
| T_HALT_COMPILER | __halt_compiler() | __halt_compiler (disponible depuis PHP 5.1.0) |
| T_IF | if | if |
| T_IMPLEMENTS | implements | la section intitulée Interfaces dans Chapitre 19 (disponible depuis PHP 5.0.0) |
| T_INC | ++ | opérateurs d'incrémention/décrémention |
| T_INCLUDE | include() | include() |
| T_INCLUDE_ONCE | include_once() | include_once() |
| T_INLINE_HTML | ||
| T_INSTANCEOF | instanceof | opérateurs de type (PHP5 seulement) |
| T_INT_CAST | (int) ou (integer) | transtypage |
| T_INTERFACE | interface | la section intitulée Interfaces dans Chapitre 19 (dipsonible depuis PHP 5.0.0) |
| T_ISSET | isset() | isset() |
| T_IS_EQUAL | == | opérateurs de comparaison |
| T_IS_GREATER_OR_EQUAL | >= | opérateurs de comparaison |
| T_IS_IDENTICAL | === | opérateurs de comparaison |
| T_IS_NOT_EQUAL | != ou <> | opérateurs de comparaison |
| T_IS_NOT_IDENTICAL | !== | opérateurs de comparaison |
| T_IS_SMALLER_OR_EQUAL | <= | opérateurs de comparaison |
| T_LINE | __LINE__ | constants |
| T_LIST | list() | list() |
| T_LNUMBER | 123, 012, 0x1ac, etc | entiers |
| T_LOGICAL_AND | and | opérateurs logiques |
| T_LOGICAL_OR | or | opérateurs logiques |
| T_LOGICAL_XOR | xor | opérateurs logiques |
| T_MINUS_EQUAL | -= | opérateurs d'assignation |
| T_ML_COMMENT | /* et */ | commentaires (PHP 4 uniquement) |
| T_MOD_EQUAL | %= | opérateurs d'assignation |
| T_MUL_EQUAL | *= | opérateurs d'assignation |
| T_NEW | new | classes et objets |
| T_NUM_STRING | ||
| T_OBJECT_CAST | (object) | transtypage |
| T_OBJECT_OPERATOR | -> | classes et objets |
| T_OLD_FUNCTION | old_function | old_function |
| T_OPEN_TAG | <?php, <? or <% | sortie du mode HTML |
| T_OPEN_TAG_WITH_ECHO | <?= ou <%= | sortie du mode HTML |
| T_OR_EQUAL | |= | opérateurs d'assignation |
| T_PAAMAYIM_NEKUDOTAYIM | :: | ::. Définie également en tant que T_DOUBLE_COLON. |
| T_PLUS_EQUAL | += | opérateurs d'assignation |
| T_PRINT | print() | print() |
| T_PRIVATE | private | classes et objets. PHP 5 uniquement. |
| T_PUBLIC | public | classes et objets. PHP 5 uniquement. |
| T_PROTECTED | protected | classes et objets. PHP 5 uniquement. |
| T_REQUIRE | require() | require() |
| T_REQUIRE_ONCE | require_once() | require_once() |
| T_RETURN | return | valeurs retournées |
| T_SL | << | opérateurs sur les bits |
| T_SL_EQUAL | <<= | opérateurs d'assignation |
| T_SR | >> | opérateurs sur les bits |
| T_SR_EQUAL | >>= | opérateurs d'assignation |
| T_START_HEREDOC | <<< | syntaxe heredoc |
| T_STATIC | static | scope de variable |
| T_STRING | ||
| T_STRING_CAST | (string) | transtypage |
| T_STRING_VARNAME | ||
| T_SWITCH | switch | switch |
| T_THROW | throw | Chapitre 20 (disponible depuis PHP 5.0.0) |
| T_TRY | try | Chapitre 20 (disponible depuis PHP 5.0.0) |
| T_UNSET | unset() | unset() |
| T_UNSET_CAST | (unset) | (non documenté; forcé à NULL) |
| T_USE | use | (pas implémenté) |
| T_VAR | var | classes et objets |
| T_VARIABLE | $foo | variables |
| T_WHILE | while | while, do...while |
| T_WHITESPACE | ||
| T_XOR_EQUAL | ^= | opérateurs d'assignation |
| T_FUNC_C | __FUNCTION__ | constantes, depuis PHP 4.3.0 |
| T_CLASS_C | __CLASS__ | constantes, depuis PHP 4.3.0 |
Voir aussi token_name().
fgm at osinet dot fr
22-Sep-2008 01:08
nathan at unfinitydesign dot com
22-Sep-2008 05:52
T_ENCAPSED_AND_WHITESPACE is whitespace which intersects a group of tokens. For example, an "unexpected T_ENCAPSED_AND_WHITESPACE" error is produced by the following code:
<?php
$main_output_world = 'snakes!'
echo('There are' 10 $main_output_world);
?>
Note the missing concatenation operator between the two strings leads to the whitespace error that is so named above. The concatenation operator instructs PHP to ignore the whitespace between the two code tokens (the so named "encapsed" data"), rather than parse it as a token itself.
The correct code would be:
<?php
$main_output_world = 'snakes!'
echo('There are' . 10 . $main_output_world);
?>
Note the addition of the concatenation operator between each token.
o_O Tync
03-Aug-2008 08:21
Some tokens are not documented, so here they are:
all of them are located within non-constant ""-strings:
T_CHARACTER - \r\n\t... . They're presented AS IS and NOT replaced with actual characters
T_ENCAPSED_AND_WHITESPACE - whitespace
T_DOLLAR_OPEN_CURLY_BRACES - ${ (ONLY in non-constant ""-strings)
T_STRING - strings (example: "$a aa")
T_NUM_STRING - numbers (exaple: "$a 0")
still have no idea what T_ENCAPSED_AND_WHITESPACE means... :(
