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