前言
PHP4.2开始提供了一个函数叫token_get_all,这个函数就可以将一段PHP代码 Scanning成Tokens。
实验代码
<?php
var_dump(token_get_all('<?php echo "hello"; $a=1;echo $a+$a;?>'));
?>
测试结果
打印信息如下,可以看到token_get_all()函数的处理。给代码扫描和做标记的难度相对较小,实验内容结束。
词性 | 处理结果 |
---|---|
运算符和界限符+=; | string |
关键字、标识符、常量 | array[种别码,属性值,长度] |
array (size=17)
0 =>
array (size=3)
0 => int 379
1 => string '<?php ' (length=6)
2 => int 1
1 =>
array (size=3)
0 => int 328
1 => string 'echo' (length=4)
2 => int 1
2 =>
array (size=3)
0 => int 382
1 => string ' ' (length=1)
2 => int 1
3 =>
array (size=3)
0 => int 323
1 => string '"hello"' (length=7)
2 => int 1
4 => string ';' (length=1)
5 =>
array (size=3)
0 => int 382
1 => string ' ' (length=1)
2 => int 1
6 =>
array (size=3)
0 => int 320
1 => string '$a' (length=2)
2 => int 1
7 => string '=' (length=1)
8 =>
array (size=3)
0 => int 317
1 => string '1' (length=1)
2 => int 1
9 => string ';' (length=1)
10 =>
array (size=3)
0 => int 328
1 => string 'echo' (length=4)
2 => int 1
11 =>
array (size=3)
0 => int 382
1 => string ' ' (length=1)
2 => int 1
12 =>
array (size=3)
0 => int 320
1 => string '$a' (length=2)
2 => int 1
13 => string '+' (length=1)
14 =>
array (size=3)
0 => int 320
1 => string '$a' (length=2)
2 => int 1
15 => string ';' (length=1)
16 =>
array (size=3)
0 => int 381
1 => string '?>' (length=2)
2 => int 1
参考
《深入理解PHP原理之Opcodes》
https://www.cnblogs.com/feixiablog/articles/8297163.html