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)
;
Lista de tokens do Parser
Várias partes da linguagem PHP é representada internamente por tipo como T_SR. PHP mostra identificadores como este em erros de análise, como "Parse error: unexpected T_SR, expecting ',' or ';' in script.php on line 10."
Para quem não sabe o que T_SR significa, há uma uma tabela com todos identificadores, Sintaxe PHP e referências para o local apropriado no manual.
| Token | Sintaxe | Referência |
|---|---|---|
| T_ABSTRACT | abstract | Abstração de Objetos (disponível desde PHP 5.0.0) |
| T_AND_EQUAL | &= | operadores de atribuição |
| T_ARRAY | array() | array(), sintaxe do array |
| T_ARRAY_CAST | (array) | conversão de tipo |
| T_AS | as | foreach |
| T_BAD_CHARACTER | qualquer abaixo do ASCII 32 exceto \t (0x09), \n (0x0a) and \r (0x0d) | |
| T_BOOLEAN_AND | && | operadores lógicos |
| T_BOOLEAN_OR | || | operadores lógicos |
| T_BOOL_CAST | (bool) or (boolean) | conversão de tipo |
| T_BREAK | break | break |
| T_CASE | case | switch |
| T_CATCH | catch | Exceções (disponível desde PHP 5.0.0) |
| T_CHARACTER | ||
| T_CLASS | class | classes e objetos |
| T_CLASS_C | __CLASS__ | constantes mágicas (disponível desde PHP 4.3.0) |
| T_CLONE | clone | classes e objetos (available since PHP 5.0.0) |
| T_CLOSE_TAG | ?> or %> | |
| T_COMMENT | // or #, and /* */ in PHP 5 | comentários |
| T_CONCAT_EQUAL | .= | operadores de atribuição |
| T_CONST | const | |
| T_CONSTANT_ENCAPSED_STRING | "foo" or 'bar' | sintaxe da string |
| T_CONTINUE | continue | |
| T_CURLY_OPEN | ||
| T_DEC | -- | operadores de incremento/decremento |
| T_DECLARE | declare | declare |
| T_DEFAULT | default | switch |
| T_DIR | __DIR__ | constantes mágicas (disponível desde o PHP 5.3.0) |
| T_DIV_EQUAL | /= | operadores de atribuição |
| T_DNUMBER | 0.12, etc | números de ponto flutuante |
| T_DOC_COMMENT | /** */ | comentários estilo PHPDoc (disponível desde PHP 5.0.0) |
| T_DO | do | do..while |
| T_DOLLAR_OPEN_CURLY_BRACES | ${ | sintaxe complexa de variáveis. |
| T_DOUBLE_ARROW | => | sintaxe do array |
| T_DOUBLE_CAST | (real), (double) or (float) | conversão de tipo |
| T_DOUBLE_COLON | :: | veja T_PAAMAYIM_NEKUDOTAYIM abaixo |
| T_ECHO | echo | echo() |
| T_ELSE | else | else |
| T_ELSEIF | elseif | elseif |
| T_EMPTY | empty | empty() |
| T_ENCAPSED_AND_WHITESPACE | ||
| T_ENDDECLARE | enddeclare | declare, sintaxe alternativa |
| T_ENDFOR | endfor | for, sintaxe alternativa |
| T_ENDFOREACH | endforeach | foreach, sintaxe alternativa |
| T_ENDIF | endif | if, sintaxe alternativa |
| T_ENDSWITCH | endswitch | switch, sintaxe alternativa |
| T_ENDWHILE | endwhile | while, sintaxe alternativa |
| T_END_HEREDOC | sintaxe heredoc | |
| T_EVAL | eval() | eval() |
| T_EXIT | exit or die | exit(), die() |
| T_EXTENDS | extends | extends, classes and objetos |
| T_FILE | __FILE__ | constantes mágicas |
| T_FINAL | final | Palavra-Chave 'final' (disponível desde PHP 5.0.0) |
| T_FOR | for | for |
| T_FOREACH | foreach | foreach |
| T_FUNCTION | function or cfunction | funções |
| T_FUNC_C | __FUNCTION__ | constantes mágicas (disponível desde PHP 4.3.0) |
| T_GLOBAL | global | escopo de váriavel |
| T_HALT_COMPILER | __halt_compiler() | __halt_compiler (disponível desde PHP 5.1.0) |
| T_IF | if | if |
| T_IMPLEMENTS | implements | Interfaces de Objetos (disponível desde PHP 5.0.0) |
| T_INC | ++ | operadores de incremento/decremento |
| T_INCLUDE | include() | include() |
| T_INCLUDE_ONCE | include_once() | include_once() |
| T_INLINE_HTML | ||
| T_INSTANCEOF | instanceof | tipos de operadores (available since PHP 5.0.0) |
| T_INT_CAST | (int) or (integer) | conversão de tipo |
| T_INTERFACE | interface | Interfaces de Objetos (disponível desde PHP 5.0.0) |
| T_ISSET | isset() | isset() |
| T_IS_EQUAL | == | operadores de comparação |
| T_IS_GREATER_OR_EQUAL | >= | operadores de comparação |
| T_IS_IDENTICAL | === | operadores de comparação |
| T_IS_NOT_EQUAL | != or <> | operadores de comparação |
| T_IS_NOT_IDENTICAL | !== | operadores de comparação |
| T_IS_SMALLER_OR_EQUAL | <= | operadores de comparação |
| T_LINE | __LINE__ | constantes mágicas |
| T_LIST | list() | list() |
| T_LNUMBER | 123, 012, 0x1ac, etc | inteiros |
| T_LOGICAL_AND | and | operadores lógicos |
| T_LOGICAL_OR | or | operadores lógicos |
| T_LOGICAL_XOR | xor | operadores lógicos |
| T_METHOD_C | __METHOD__ | constantes mágicas (disponível desde o PHP 5.0.0) |
| T_MINUS_EQUAL | -= | operadores de atribuição |
| T_ML_COMMENT | /* and */ | comentários (Somente no PHP 4) |
| T_MOD_EQUAL | %= | operadores de atribuição |
| T_MUL_EQUAL | *= | operadores de atribuição |
| T_NS_C | __NAMESPACE__ | namespaces. Também definido como T_NAMESPACE (disponível desde o PHP 5.3.0) |
| T_NEW | new | classes e objetos |
| T_NUM_STRING | ||
| T_OBJECT_CAST | (object) | conversão de tipo |
| T_OBJECT_OPERATOR | -> | classes e objetos |
| T_OLD_FUNCTION | old_function | |
| T_OPEN_TAG | <?php, <? or <% | escaping from HTML |
| T_OPEN_TAG_WITH_ECHO | <?= or <%= | escaping from HTML |
| T_OR_EQUAL | |= | operadores de atribuição |
| T_PAAMAYIM_NEKUDOTAYIM | :: | ::. Também definido como T_DOUBLE_COLON. |
| T_PLUS_EQUAL | += | operadores de atribuição |
| T_PRINT | print() | print() |
| T_PRIVATE | private | classes e objetos (disponível desde PHP 5.0.0) |
| T_PUBLIC | public | classes e objetos (disponível desde PHP 5.0.0) |
| T_PROTECTED | protected | classes e objetos (disponível desde PHP 5.0.0) |
| T_REQUIRE | require() | require() |
| T_REQUIRE_ONCE | require_once() | require_once() |
| T_RETURN | return | retornando valores |
| T_SL | << | operadores bit-a-bit |
| T_SL_EQUAL | <<= | operadores de atribuição |
| T_SR | >> | operadores bit-a-bit |
| T_SR_EQUAL | >>= | operadores de atribuição |
| T_START_HEREDOC | <<< | sintaxe heredoc |
| T_STATIC | static | escopo de variável |
| T_STRING | ||
| T_STRING_CAST | (string) | conversão de tipo |
| T_STRING_VARNAME | ||
| T_SWITCH | switch | switch |
| T_THROW | throw | Exceções (disponível desde PHP 5.0.0) |
| T_TRY | try | Exceções (disponível desde PHP 5.0.0) |
| T_UNSET | unset() | unset() |
| T_UNSET_CAST | (unset) | (não documentado; converte para NULL) |
| T_USE | use | namespaces (disponível desde o PHP 5.3.0) |
| T_VAR | var | classes e objetos |
| T_VARIABLE | $foo | variáveis |
| T_WHILE | while | while, do..while |
| T_WHITESPACE | ||
| T_XOR_EQUAL | ^= | operadores de atribuição |
Veja também token_name().
Lista de tokens do Parser
fgm at osinet dot fr
22-Sep-2008 01:08
22-Sep-2008 01:08
nathan at unfinitydesign dot com
22-Sep-2008 05:52
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
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... :(
