Я оплатил вокруг с token_get_all()
еще раз и наткнулся на что-то «особого»:token_get_all и математические операторы
Учитывая следующую строку PHP код:
<?php $var = 3 * 2 + 5;
, когда я использую token_get_all()
на него я получаю массив лексем:
array(15) {
[0]=>
array(3) {
[0]=>
int(376)
[1]=>
string(6) "<?php "
[2]=>
int(1)
}
[1]=>
array(3) {
[0]=>
int(312)
[1]=>
string(4) "$var"
[2]=>
int(1)
}
[2]=>
array(3) {
[0]=>
int(379)
[1]=>
string(1) " "
[2]=>
int(1)
}
[3]=>
string(1) "="
[4]=>
array(3) {
[0]=>
int(379)
[1]=>
string(1) " "
[2]=>
int(1)
}
[5]=>
array(3) {
[0]=>
int(308)
[1]=>
string(1) "3"
[2]=>
int(1)
}
[6]=>
array(3) {
[0]=>
int(379)
[1]=>
string(1) " "
[2]=>
int(1)
}
[7]=>
string(1) "*"
[8]=>
array(3) {
[0]=>
int(379)
[1]=>
string(1) " "
[2]=>
int(1)
}
[9]=>
array(3) {
[0]=>
int(308)
[1]=>
string(1) "2"
[2]=>
int(1)
}
[10]=>
array(3) {
[0]=>
int(379)
[1]=>
string(1) " "
[2]=>
int(1)
}
[11]=>
string(1) "+"
[12]=>
array(3) {
[0]=>
int(379)
[1]=>
string(1) " "
[2]=>
int(1)
}
[13]=>
array(3) {
[0]=>
int(308)
[1]=>
string(1) "5"
[2]=>
int(1)
}
[14]=>
string(1) ";"
}
Обратите внимание, что математические операторы (=
, *
, +
) и точка с запятой (;
) - это не токены, а только строки. Я ожидал получить что-то вроде T_MATH_ADDITION
за +
и т. Д.
Почему эти «инструкции» выше не обрабатываются как токены?
Отлично. Thx для вашего объяснения. Я определенно буду смотреть в книгу :-). – TiMESPLiNTER
Удачи! :) – hek2mgl