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)
;
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.
| Token | Syntaxe | Référence |
|---|---|---|
| T_ABSTRACT | abstract | Abstraction de classes (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 | Les exceptions (disponible depuis PHP 5.0.0) |
| T_CHARACTER | ||
| T_CLASS | class | classes et objets |
| T_CLASS_C | __CLASS__ | constantes magiques (disponible depuis PHP 4.3.0) |
| T_CLONE | clone | classes et objets. (disponible depuis PHP 5.0.0) |
| 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_DIR | __DIR__ | constantes magiques (disponible depuis PHP 5.3.0) |
| T_DIV_EQUAL | /= | opérateurs d'assignation |
| T_DNUMBER | 0.12, etc. | nombres à virgule flottante |
| T_DOC_COMMENT | /** */ | style de commentaire dans la PHPDoc (disponible depuis PHP 5.0.0) |
| 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 magiques |
| T_FINAL | final | Mot-clé "final" (disponible depuis PHP 5.0.0) |
| T_FOR | for | for |
| T_FOREACH | foreach | foreach |
| T_FUNCTION | function or cfunction | fonctions |
| T_FUNC_C | __FUNCTION__ | constantes magiques (disponible depuis PHP 4.3.0) |
| T_GLOBAL | global | scope de variable |
| T_GOTO | goto | non documenté (disponible depuis PHP 5.3.0) |
| T_HALT_COMPILER | __halt_compiler() | __halt_compiler (disponible depuis PHP 5.1.0) |
| T_IF | if | if |
| T_IMPLEMENTS | implements | Interfaces (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 (disponible depuis PHP 5.0.0) |
| T_INT_CAST | (int) ou (integer) | transtypage |
| T_INTERFACE | interface | Interfaces (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__ | constantes magiques |
| 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_METHOD_C | __METHOD__ | constantes magiques (disponible depuis PHP 5.0.0) |
| 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_NS_C | __NAMESPACE__ | namespaces. Également défini comme T_NAMESPACE (disponible depuis PHP 5.3.0) |
| 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 | |
| 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 (disponible depuis PHP 5.0.0) |
| T_PUBLIC | public | classes et objets (disponible depuis PHP 5.0.0) |
| T_PROTECTED | protected | classes et objets (disponible depuis PHP 5.0.0) |
| 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 | Les exceptions (disponible depuis PHP 5.0.0) |
| T_TRY | try | Les exceptions (disponible depuis PHP 5.0.0) |
| T_UNSET | unset() | unset() |
| T_UNSET_CAST | (unset) | type-casting (disponible depuis PHP 5.0.0) |
| T_USE | use | namespaces (disponible depuis PHP 5.3.0) |
| 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 |
Voir aussi token_name().
Liste des tokens de l'analyseur
fgm at osinet dot fr
22-Sep-2008 10:08
22-Sep-2008 10:08
nathan at unfinitydesign dot com
22-Sep-2008 02:52
22-Sep-2008 02: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
04-Aug-2008 05:21
04-Aug-2008 05: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... :(
