1--TEST-- 2Test token_get_all() function : usage variations - with control structure tokens 3--SKIPIF-- 4<?php if (!extension_loaded("tokenizer")) print "skip"; ?> 5--FILE-- 6<?php 7/* Prototype : array token_get_all(string $source) 8 * Description: splits the given source into an array of PHP languange tokens 9 * Source code: ext/tokenizer/tokenizer.c 10*/ 11 12/* 13 * Using different control structure keywords 14 * if..else, elseif - T_IF(301), T_ELSEIF(302), T_ELSE(303) 15 * while - T_WHILE(318) 16 * do...while - T_DO(317) 17 * for - T_ENDFOR(320) 18 * foreach - T_ENDFOREACH(322) 19 * switch...case - T_ENDSWITCH(327), T_CASE(329) 20 * break - T_BREAK(331) 21 * continue - T_CONTINUE(332) 22*/ 23 24echo "*** Testing token_get_all() : for control structure tokens ***\n"; 25 26// if..elseif....else 27echo "-- with if..elseif..else..tokens --\n"; 28 29$source = '<?php 30if($a == true) { 31 echo "$a = true"; 32} 33elseif($a == false) { 34 echo false; 35} 36else 37 echo 1; 38?>'; 39 40var_dump( token_get_all($source)); 41 42// while..., do..while, break, continue 43echo "-- with while..., do..while, switch & continue tokens --\n"; 44 45$source = "<?php while(true) { 46echo 'True'; 47break; 48} 49do { 50continue; 51}while(false); ?>"; 52 53var_dump( token_get_all($source)); 54 55// for..., foreach( as ) 56echo "-- with for..foreach( as ) tokens --\n"; 57 58$source = '<?php for($count=0; $count < 5; $count++) { 59echo $count; 60} 61foreach($values as $index) { 62continue; 63} ?>'; 64 65var_dump( token_get_all($source)); 66 67// switch..case, default 68echo "-- with switch...case tokens --\n"; 69 70$source = '<?php switch($var) 71case 1: break; 72default: echo "default"; ?>'; 73 74var_dump( token_get_all($source)); 75 76echo "Done" 77?> 78--EXPECTF-- 79*** Testing token_get_all() : for control structure tokens *** 80-- with if..elseif..else..tokens -- 81array(49) { 82 [0]=> 83 array(3) { 84 [0]=> 85 int(%d) 86 [1]=> 87 string(6) "<?php " 88 [2]=> 89 int(1) 90 } 91 [1]=> 92 array(3) { 93 [0]=> 94 int(%d) 95 [1]=> 96 string(1) " 97" 98 [2]=> 99 int(1) 100 } 101 [2]=> 102 array(3) { 103 [0]=> 104 int(%d) 105 [1]=> 106 string(2) "if" 107 [2]=> 108 int(2) 109 } 110 [3]=> 111 string(1) "(" 112 [4]=> 113 array(3) { 114 [0]=> 115 int(%d) 116 [1]=> 117 string(2) "$a" 118 [2]=> 119 int(2) 120 } 121 [5]=> 122 array(3) { 123 [0]=> 124 int(%d) 125 [1]=> 126 string(1) " " 127 [2]=> 128 int(2) 129 } 130 [6]=> 131 array(3) { 132 [0]=> 133 int(%d) 134 [1]=> 135 string(2) "==" 136 [2]=> 137 int(2) 138 } 139 [7]=> 140 array(3) { 141 [0]=> 142 int(%d) 143 [1]=> 144 string(1) " " 145 [2]=> 146 int(2) 147 } 148 [8]=> 149 array(3) { 150 [0]=> 151 int(%d) 152 [1]=> 153 string(4) "true" 154 [2]=> 155 int(2) 156 } 157 [9]=> 158 string(1) ")" 159 [10]=> 160 array(3) { 161 [0]=> 162 int(%d) 163 [1]=> 164 string(1) " " 165 [2]=> 166 int(2) 167 } 168 [11]=> 169 string(1) "{" 170 [12]=> 171 array(3) { 172 [0]=> 173 int(%d) 174 [1]=> 175 string(6) " 176 " 177 [2]=> 178 int(2) 179 } 180 [13]=> 181 array(3) { 182 [0]=> 183 int(%d) 184 [1]=> 185 string(4) "echo" 186 [2]=> 187 int(%d) 188 } 189 [14]=> 190 array(3) { 191 [0]=> 192 int(%d) 193 [1]=> 194 string(1) " " 195 [2]=> 196 int(%d) 197 } 198 [15]=> 199 string(1) """ 200 [16]=> 201 array(3) { 202 [0]=> 203 int(%d) 204 [1]=> 205 string(2) "$a" 206 [2]=> 207 int(%d) 208 } 209 [17]=> 210 array(3) { 211 [0]=> 212 int(%d) 213 [1]=> 214 string(7) " = true" 215 [2]=> 216 int(%d) 217 } 218 [18]=> 219 string(1) """ 220 [19]=> 221 string(1) ";" 222 [20]=> 223 array(3) { 224 [0]=> 225 int(%d) 226 [1]=> 227 string(1) " 228" 229 [2]=> 230 int(%d) 231 } 232 [21]=> 233 string(1) "}" 234 [22]=> 235 array(3) { 236 [0]=> 237 int(%d) 238 [1]=> 239 string(1) " 240" 241 [2]=> 242 int(4) 243 } 244 [23]=> 245 array(3) { 246 [0]=> 247 int(%d) 248 [1]=> 249 string(6) "elseif" 250 [2]=> 251 int(5) 252 } 253 [24]=> 254 string(1) "(" 255 [25]=> 256 array(3) { 257 [0]=> 258 int(%d) 259 [1]=> 260 string(2) "$a" 261 [2]=> 262 int(5) 263 } 264 [26]=> 265 array(3) { 266 [0]=> 267 int(%d) 268 [1]=> 269 string(1) " " 270 [2]=> 271 int(5) 272 } 273 [27]=> 274 array(3) { 275 [0]=> 276 int(%d) 277 [1]=> 278 string(2) "==" 279 [2]=> 280 int(5) 281 } 282 [28]=> 283 array(3) { 284 [0]=> 285 int(%d) 286 [1]=> 287 string(1) " " 288 [2]=> 289 int(5) 290 } 291 [29]=> 292 array(3) { 293 [0]=> 294 int(%d) 295 [1]=> 296 string(5) "false" 297 [2]=> 298 int(5) 299 } 300 [30]=> 301 string(1) ")" 302 [31]=> 303 array(3) { 304 [0]=> 305 int(%d) 306 [1]=> 307 string(1) " " 308 [2]=> 309 int(5) 310 } 311 [32]=> 312 string(1) "{" 313 [33]=> 314 array(3) { 315 [0]=> 316 int(%d) 317 [1]=> 318 string(3) " 319 " 320 [2]=> 321 int(5) 322 } 323 [34]=> 324 array(3) { 325 [0]=> 326 int(%d) 327 [1]=> 328 string(4) "echo" 329 [2]=> 330 int(6) 331 } 332 [35]=> 333 array(3) { 334 [0]=> 335 int(%d) 336 [1]=> 337 string(1) " " 338 [2]=> 339 int(6) 340 } 341 [36]=> 342 array(3) { 343 [0]=> 344 int(%d) 345 [1]=> 346 string(5) "false" 347 [2]=> 348 int(6) 349 } 350 [37]=> 351 string(1) ";" 352 [38]=> 353 array(3) { 354 [0]=> 355 int(%d) 356 [1]=> 357 string(1) " 358" 359 [2]=> 360 int(6) 361 } 362 [39]=> 363 string(1) "}" 364 [40]=> 365 array(3) { 366 [0]=> 367 int(%d) 368 [1]=> 369 string(1) " 370" 371 [2]=> 372 int(7) 373 } 374 [41]=> 375 array(3) { 376 [0]=> 377 int(%d) 378 [1]=> 379 string(4) "else" 380 [2]=> 381 int(8) 382 } 383 [42]=> 384 array(3) { 385 [0]=> 386 int(%d) 387 [1]=> 388 string(3) " 389 " 390 [2]=> 391 int(8) 392 } 393 [43]=> 394 array(3) { 395 [0]=> 396 int(%d) 397 [1]=> 398 string(4) "echo" 399 [2]=> 400 int(9) 401 } 402 [44]=> 403 array(3) { 404 [0]=> 405 int(%d) 406 [1]=> 407 string(1) " " 408 [2]=> 409 int(9) 410 } 411 [45]=> 412 array(3) { 413 [0]=> 414 int(%d) 415 [1]=> 416 string(1) "1" 417 [2]=> 418 int(9) 419 } 420 [46]=> 421 string(1) ";" 422 [47]=> 423 array(3) { 424 [0]=> 425 int(%d) 426 [1]=> 427 string(1) " 428" 429 [2]=> 430 int(9) 431 } 432 [48]=> 433 array(3) { 434 [0]=> 435 int(%d) 436 [1]=> 437 string(2) "?>" 438 [2]=> 439 int(10) 440 } 441} 442-- with while..., do..while, switch & continue tokens -- 443array(33) { 444 [0]=> 445 array(3) { 446 [0]=> 447 int(%d) 448 [1]=> 449 string(6) "<?php " 450 [2]=> 451 int(1) 452 } 453 [1]=> 454 array(3) { 455 [0]=> 456 int(%d) 457 [1]=> 458 string(5) "while" 459 [2]=> 460 int(1) 461 } 462 [2]=> 463 string(1) "(" 464 [3]=> 465 array(3) { 466 [0]=> 467 int(%d) 468 [1]=> 469 string(4) "true" 470 [2]=> 471 int(1) 472 } 473 [4]=> 474 string(1) ")" 475 [5]=> 476 array(3) { 477 [0]=> 478 int(%d) 479 [1]=> 480 string(1) " " 481 [2]=> 482 int(1) 483 } 484 [6]=> 485 string(1) "{" 486 [7]=> 487 array(3) { 488 [0]=> 489 int(%d) 490 [1]=> 491 string(1) " 492" 493 [2]=> 494 int(1) 495 } 496 [8]=> 497 array(3) { 498 [0]=> 499 int(%d) 500 [1]=> 501 string(4) "echo" 502 [2]=> 503 int(2) 504 } 505 [9]=> 506 array(3) { 507 [0]=> 508 int(%d) 509 [1]=> 510 string(1) " " 511 [2]=> 512 int(2) 513 } 514 [10]=> 515 array(3) { 516 [0]=> 517 int(%d) 518 [1]=> 519 string(6) "'True'" 520 [2]=> 521 int(2) 522 } 523 [11]=> 524 string(1) ";" 525 [12]=> 526 array(3) { 527 [0]=> 528 int(%d) 529 [1]=> 530 string(1) " 531" 532 [2]=> 533 int(2) 534 } 535 [13]=> 536 array(3) { 537 [0]=> 538 int(%d) 539 [1]=> 540 string(5) "break" 541 [2]=> 542 int(%d) 543 } 544 [14]=> 545 string(1) ";" 546 [15]=> 547 array(3) { 548 [0]=> 549 int(%d) 550 [1]=> 551 string(1) " 552" 553 [2]=> 554 int(%d) 555 } 556 [16]=> 557 string(1) "}" 558 [17]=> 559 array(3) { 560 [0]=> 561 int(%d) 562 [1]=> 563 string(1) " 564" 565 [2]=> 566 int(4) 567 } 568 [18]=> 569 array(3) { 570 [0]=> 571 int(%d) 572 [1]=> 573 string(2) "do" 574 [2]=> 575 int(5) 576 } 577 [19]=> 578 array(3) { 579 [0]=> 580 int(%d) 581 [1]=> 582 string(1) " " 583 [2]=> 584 int(5) 585 } 586 [20]=> 587 string(1) "{" 588 [21]=> 589 array(3) { 590 [0]=> 591 int(%d) 592 [1]=> 593 string(1) " 594" 595 [2]=> 596 int(5) 597 } 598 [22]=> 599 array(3) { 600 [0]=> 601 int(%d) 602 [1]=> 603 string(8) "continue" 604 [2]=> 605 int(6) 606 } 607 [23]=> 608 string(1) ";" 609 [24]=> 610 array(3) { 611 [0]=> 612 int(%d) 613 [1]=> 614 string(1) " 615" 616 [2]=> 617 int(6) 618 } 619 [25]=> 620 string(1) "}" 621 [26]=> 622 array(3) { 623 [0]=> 624 int(%d) 625 [1]=> 626 string(5) "while" 627 [2]=> 628 int(7) 629 } 630 [27]=> 631 string(1) "(" 632 [28]=> 633 array(3) { 634 [0]=> 635 int(%d) 636 [1]=> 637 string(5) "false" 638 [2]=> 639 int(7) 640 } 641 [29]=> 642 string(1) ")" 643 [30]=> 644 string(1) ";" 645 [31]=> 646 array(3) { 647 [0]=> 648 int(%d) 649 [1]=> 650 string(1) " " 651 [2]=> 652 int(7) 653 } 654 [32]=> 655 array(3) { 656 [0]=> 657 int(%d) 658 [1]=> 659 string(2) "?>" 660 [2]=> 661 int(7) 662 } 663} 664-- with for..foreach( as ) tokens -- 665array(45) { 666 [0]=> 667 array(3) { 668 [0]=> 669 int(%d) 670 [1]=> 671 string(6) "<?php " 672 [2]=> 673 int(1) 674 } 675 [1]=> 676 array(3) { 677 [0]=> 678 int(%d) 679 [1]=> 680 string(3) "for" 681 [2]=> 682 int(1) 683 } 684 [2]=> 685 string(1) "(" 686 [3]=> 687 array(3) { 688 [0]=> 689 int(%d) 690 [1]=> 691 string(6) "$count" 692 [2]=> 693 int(1) 694 } 695 [4]=> 696 string(1) "=" 697 [5]=> 698 array(3) { 699 [0]=> 700 int(%d) 701 [1]=> 702 string(1) "0" 703 [2]=> 704 int(1) 705 } 706 [6]=> 707 string(1) ";" 708 [7]=> 709 array(3) { 710 [0]=> 711 int(%d) 712 [1]=> 713 string(1) " " 714 [2]=> 715 int(1) 716 } 717 [8]=> 718 array(3) { 719 [0]=> 720 int(%d) 721 [1]=> 722 string(6) "$count" 723 [2]=> 724 int(1) 725 } 726 [9]=> 727 array(3) { 728 [0]=> 729 int(%d) 730 [1]=> 731 string(1) " " 732 [2]=> 733 int(1) 734 } 735 [10]=> 736 string(1) "<" 737 [11]=> 738 array(3) { 739 [0]=> 740 int(%d) 741 [1]=> 742 string(1) " " 743 [2]=> 744 int(1) 745 } 746 [12]=> 747 array(3) { 748 [0]=> 749 int(%d) 750 [1]=> 751 string(1) "5" 752 [2]=> 753 int(1) 754 } 755 [13]=> 756 string(1) ";" 757 [14]=> 758 array(3) { 759 [0]=> 760 int(%d) 761 [1]=> 762 string(1) " " 763 [2]=> 764 int(1) 765 } 766 [15]=> 767 array(3) { 768 [0]=> 769 int(%d) 770 [1]=> 771 string(6) "$count" 772 [2]=> 773 int(1) 774 } 775 [16]=> 776 array(3) { 777 [0]=> 778 int(%d) 779 [1]=> 780 string(2) "++" 781 [2]=> 782 int(1) 783 } 784 [17]=> 785 string(1) ")" 786 [18]=> 787 array(3) { 788 [0]=> 789 int(%d) 790 [1]=> 791 string(1) " " 792 [2]=> 793 int(1) 794 } 795 [19]=> 796 string(1) "{" 797 [20]=> 798 array(3) { 799 [0]=> 800 int(%d) 801 [1]=> 802 string(1) " 803" 804 [2]=> 805 int(1) 806 } 807 [21]=> 808 array(3) { 809 [0]=> 810 int(%d) 811 [1]=> 812 string(4) "echo" 813 [2]=> 814 int(2) 815 } 816 [22]=> 817 array(3) { 818 [0]=> 819 int(%d) 820 [1]=> 821 string(1) " " 822 [2]=> 823 int(2) 824 } 825 [23]=> 826 array(3) { 827 [0]=> 828 int(%d) 829 [1]=> 830 string(6) "$count" 831 [2]=> 832 int(2) 833 } 834 [24]=> 835 string(1) ";" 836 [25]=> 837 array(3) { 838 [0]=> 839 int(%d) 840 [1]=> 841 string(1) " 842" 843 [2]=> 844 int(2) 845 } 846 [26]=> 847 string(1) "}" 848 [27]=> 849 array(3) { 850 [0]=> 851 int(%d) 852 [1]=> 853 string(1) " 854" 855 [2]=> 856 int(%d) 857 } 858 [28]=> 859 array(3) { 860 [0]=> 861 int(%d) 862 [1]=> 863 string(7) "foreach" 864 [2]=> 865 int(4) 866 } 867 [29]=> 868 string(1) "(" 869 [30]=> 870 array(3) { 871 [0]=> 872 int(%d) 873 [1]=> 874 string(7) "$values" 875 [2]=> 876 int(4) 877 } 878 [31]=> 879 array(3) { 880 [0]=> 881 int(%d) 882 [1]=> 883 string(1) " " 884 [2]=> 885 int(4) 886 } 887 [32]=> 888 array(3) { 889 [0]=> 890 int(%d) 891 [1]=> 892 string(2) "as" 893 [2]=> 894 int(4) 895 } 896 [33]=> 897 array(3) { 898 [0]=> 899 int(%d) 900 [1]=> 901 string(1) " " 902 [2]=> 903 int(4) 904 } 905 [34]=> 906 array(3) { 907 [0]=> 908 int(%d) 909 [1]=> 910 string(6) "$index" 911 [2]=> 912 int(4) 913 } 914 [35]=> 915 string(1) ")" 916 [36]=> 917 array(3) { 918 [0]=> 919 int(%d) 920 [1]=> 921 string(1) " " 922 [2]=> 923 int(4) 924 } 925 [37]=> 926 string(1) "{" 927 [38]=> 928 array(3) { 929 [0]=> 930 int(%d) 931 [1]=> 932 string(1) " 933" 934 [2]=> 935 int(4) 936 } 937 [39]=> 938 array(3) { 939 [0]=> 940 int(%d) 941 [1]=> 942 string(8) "continue" 943 [2]=> 944 int(5) 945 } 946 [40]=> 947 string(1) ";" 948 [41]=> 949 array(3) { 950 [0]=> 951 int(%d) 952 [1]=> 953 string(1) " 954" 955 [2]=> 956 int(5) 957 } 958 [42]=> 959 string(1) "}" 960 [43]=> 961 array(3) { 962 [0]=> 963 int(%d) 964 [1]=> 965 string(1) " " 966 [2]=> 967 int(6) 968 } 969 [44]=> 970 array(3) { 971 [0]=> 972 int(%d) 973 [1]=> 974 string(2) "?>" 975 [2]=> 976 int(6) 977 } 978} 979-- with switch...case tokens -- 980array(23) { 981 [0]=> 982 array(3) { 983 [0]=> 984 int(%d) 985 [1]=> 986 string(6) "<?php " 987 [2]=> 988 int(1) 989 } 990 [1]=> 991 array(3) { 992 [0]=> 993 int(%d) 994 [1]=> 995 string(6) "switch" 996 [2]=> 997 int(1) 998 } 999 [2]=> 1000 string(1) "(" 1001 [3]=> 1002 array(3) { 1003 [0]=> 1004 int(%d) 1005 [1]=> 1006 string(4) "$var" 1007 [2]=> 1008 int(1) 1009 } 1010 [4]=> 1011 string(1) ")" 1012 [5]=> 1013 array(3) { 1014 [0]=> 1015 int(%d) 1016 [1]=> 1017 string(1) " 1018" 1019 [2]=> 1020 int(1) 1021 } 1022 [6]=> 1023 array(3) { 1024 [0]=> 1025 int(%d) 1026 [1]=> 1027 string(4) "case" 1028 [2]=> 1029 int(2) 1030 } 1031 [7]=> 1032 array(3) { 1033 [0]=> 1034 int(%d) 1035 [1]=> 1036 string(1) " " 1037 [2]=> 1038 int(2) 1039 } 1040 [8]=> 1041 array(3) { 1042 [0]=> 1043 int(%d) 1044 [1]=> 1045 string(1) "1" 1046 [2]=> 1047 int(2) 1048 } 1049 [9]=> 1050 string(1) ":" 1051 [10]=> 1052 array(3) { 1053 [0]=> 1054 int(%d) 1055 [1]=> 1056 string(1) " " 1057 [2]=> 1058 int(2) 1059 } 1060 [11]=> 1061 array(3) { 1062 [0]=> 1063 int(%d) 1064 [1]=> 1065 string(5) "break" 1066 [2]=> 1067 int(2) 1068 } 1069 [12]=> 1070 string(1) ";" 1071 [13]=> 1072 array(3) { 1073 [0]=> 1074 int(%d) 1075 [1]=> 1076 string(1) " 1077" 1078 [2]=> 1079 int(2) 1080 } 1081 [14]=> 1082 array(3) { 1083 [0]=> 1084 int(%d) 1085 [1]=> 1086 string(7) "default" 1087 [2]=> 1088 int(%d) 1089 } 1090 [15]=> 1091 string(1) ":" 1092 [16]=> 1093 array(3) { 1094 [0]=> 1095 int(%d) 1096 [1]=> 1097 string(1) " " 1098 [2]=> 1099 int(%d) 1100 } 1101 [17]=> 1102 array(3) { 1103 [0]=> 1104 int(%d) 1105 [1]=> 1106 string(4) "echo" 1107 [2]=> 1108 int(%d) 1109 } 1110 [18]=> 1111 array(3) { 1112 [0]=> 1113 int(%d) 1114 [1]=> 1115 string(1) " " 1116 [2]=> 1117 int(%d) 1118 } 1119 [19]=> 1120 array(3) { 1121 [0]=> 1122 int(%d) 1123 [1]=> 1124 string(9) ""default"" 1125 [2]=> 1126 int(%d) 1127 } 1128 [20]=> 1129 string(1) ";" 1130 [21]=> 1131 array(3) { 1132 [0]=> 1133 int(%d) 1134 [1]=> 1135 string(1) " " 1136 [2]=> 1137 int(%d) 1138 } 1139 [22]=> 1140 array(3) { 1141 [0]=> 1142 int(%d) 1143 [1]=> 1144 string(2) "?>" 1145 [2]=> 1146 int(%d) 1147 } 1148} 1149Done 1150