1--TEST-- 2Test fscanf() function: usage variations - string formats with float values 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 float values using different string format types */ 12 13$file_path = __DIR__; 14 15echo "*** Test fscanf(): different string format types with float values ***\n"; 16 17// create a file 18$filename = "$file_path/fscanf_variation15.tmp"; 19$file_handle = fopen($filename, "w"); 20if($file_handle == false) 21 exit("Error:failed to open file $filename"); 22 23// array of float type values 24 25$float_values = array ( 26 -2147483649, 27 2147483648, 28 -0x80000001, // float value, beyond max negative int 29 0x800000001, // float value, beyond max positive int 30 020000000001, // float value, beyond max positive int 31 -020000000001, // float value, beyond max negative int 32 0.0, 33 -0.1, 34 1.0, 35 1e5, 36 -1e6, 37 1E8, 38 -1E9, 39 10.0000000000000000005, 40 10.5e+5 41); 42 43$string_formats = array( "%s", 44 "%hs", "%ls", "%Ls", 45 " %s", "%s ", "% s", 46 "\t%s", "\n%s", "%4s", 47 "%30s", "%[a-zA-Z0-9]", "%*s"); 48 49$counter = 1; 50 51// writing to the file 52foreach($float_values as $value) { 53 @fprintf($file_handle, $value); 54 @fprintf($file_handle, "\n"); 55} 56// closing the file 57fclose($file_handle); 58 59// opening the file for reading 60$file_handle = fopen($filename, "r"); 61if($file_handle == false) { 62 exit("Error:failed to open file $filename"); 63} 64 65$counter = 1; 66// reading the values from file using different string formats 67foreach($string_formats as $string_format) { 68 // rewind the file so that for every foreach iteration the file pointer starts from bof 69 rewind($file_handle); 70 echo "\n-- iteration $counter --\n"; 71 while( !feof($file_handle) ) { 72 var_dump( fscanf($file_handle,$string_format) ); 73 } 74 $counter++; 75} 76 77echo "\n*** Done ***"; 78?> 79--CLEAN-- 80<?php 81$file_path = __DIR__; 82$filename = "$file_path/fscanf_variation15.tmp"; 83unlink($filename); 84?> 85--EXPECTF-- 86*** Test fscanf(): different string format types with float values *** 87 88-- iteration 1 -- 89array(1) { 90 [0]=> 91 string(11) "-2147483649" 92} 93array(1) { 94 [0]=> 95 string(10) "2147483648" 96} 97array(1) { 98 [0]=> 99 string(11) "-2147483649" 100} 101array(1) { 102 [0]=> 103 string(11) "34359738369" 104} 105array(1) { 106 [0]=> 107 string(10) "2147483649" 108} 109array(1) { 110 [0]=> 111 string(11) "-2147483649" 112} 113array(1) { 114 [0]=> 115 string(1) "0" 116} 117array(1) { 118 [0]=> 119 string(4) "-0.1" 120} 121array(1) { 122 [0]=> 123 string(1) "1" 124} 125array(1) { 126 [0]=> 127 string(6) "100000" 128} 129array(1) { 130 [0]=> 131 string(8) "-1000000" 132} 133array(1) { 134 [0]=> 135 string(9) "100000000" 136} 137array(1) { 138 [0]=> 139 string(11) "-1000000000" 140} 141array(1) { 142 [0]=> 143 string(2) "10" 144} 145array(1) { 146 [0]=> 147 string(7) "1050000" 148} 149bool(false) 150 151-- iteration 2 -- 152array(1) { 153 [0]=> 154 string(11) "-2147483649" 155} 156array(1) { 157 [0]=> 158 string(10) "2147483648" 159} 160array(1) { 161 [0]=> 162 string(11) "-2147483649" 163} 164array(1) { 165 [0]=> 166 string(11) "34359738369" 167} 168array(1) { 169 [0]=> 170 string(10) "2147483649" 171} 172array(1) { 173 [0]=> 174 string(11) "-2147483649" 175} 176array(1) { 177 [0]=> 178 string(1) "0" 179} 180array(1) { 181 [0]=> 182 string(4) "-0.1" 183} 184array(1) { 185 [0]=> 186 string(1) "1" 187} 188array(1) { 189 [0]=> 190 string(6) "100000" 191} 192array(1) { 193 [0]=> 194 string(8) "-1000000" 195} 196array(1) { 197 [0]=> 198 string(9) "100000000" 199} 200array(1) { 201 [0]=> 202 string(11) "-1000000000" 203} 204array(1) { 205 [0]=> 206 string(2) "10" 207} 208array(1) { 209 [0]=> 210 string(7) "1050000" 211} 212bool(false) 213 214-- iteration 3 -- 215array(1) { 216 [0]=> 217 string(11) "-2147483649" 218} 219array(1) { 220 [0]=> 221 string(10) "2147483648" 222} 223array(1) { 224 [0]=> 225 string(11) "-2147483649" 226} 227array(1) { 228 [0]=> 229 string(11) "34359738369" 230} 231array(1) { 232 [0]=> 233 string(10) "2147483649" 234} 235array(1) { 236 [0]=> 237 string(11) "-2147483649" 238} 239array(1) { 240 [0]=> 241 string(1) "0" 242} 243array(1) { 244 [0]=> 245 string(4) "-0.1" 246} 247array(1) { 248 [0]=> 249 string(1) "1" 250} 251array(1) { 252 [0]=> 253 string(6) "100000" 254} 255array(1) { 256 [0]=> 257 string(8) "-1000000" 258} 259array(1) { 260 [0]=> 261 string(9) "100000000" 262} 263array(1) { 264 [0]=> 265 string(11) "-1000000000" 266} 267array(1) { 268 [0]=> 269 string(2) "10" 270} 271array(1) { 272 [0]=> 273 string(7) "1050000" 274} 275bool(false) 276 277-- iteration 4 -- 278array(1) { 279 [0]=> 280 string(11) "-2147483649" 281} 282array(1) { 283 [0]=> 284 string(10) "2147483648" 285} 286array(1) { 287 [0]=> 288 string(11) "-2147483649" 289} 290array(1) { 291 [0]=> 292 string(11) "34359738369" 293} 294array(1) { 295 [0]=> 296 string(10) "2147483649" 297} 298array(1) { 299 [0]=> 300 string(11) "-2147483649" 301} 302array(1) { 303 [0]=> 304 string(1) "0" 305} 306array(1) { 307 [0]=> 308 string(4) "-0.1" 309} 310array(1) { 311 [0]=> 312 string(1) "1" 313} 314array(1) { 315 [0]=> 316 string(6) "100000" 317} 318array(1) { 319 [0]=> 320 string(8) "-1000000" 321} 322array(1) { 323 [0]=> 324 string(9) "100000000" 325} 326array(1) { 327 [0]=> 328 string(11) "-1000000000" 329} 330array(1) { 331 [0]=> 332 string(2) "10" 333} 334array(1) { 335 [0]=> 336 string(7) "1050000" 337} 338bool(false) 339 340-- iteration 5 -- 341array(1) { 342 [0]=> 343 string(11) "-2147483649" 344} 345array(1) { 346 [0]=> 347 string(10) "2147483648" 348} 349array(1) { 350 [0]=> 351 string(11) "-2147483649" 352} 353array(1) { 354 [0]=> 355 string(11) "34359738369" 356} 357array(1) { 358 [0]=> 359 string(10) "2147483649" 360} 361array(1) { 362 [0]=> 363 string(11) "-2147483649" 364} 365array(1) { 366 [0]=> 367 string(1) "0" 368} 369array(1) { 370 [0]=> 371 string(4) "-0.1" 372} 373array(1) { 374 [0]=> 375 string(1) "1" 376} 377array(1) { 378 [0]=> 379 string(6) "100000" 380} 381array(1) { 382 [0]=> 383 string(8) "-1000000" 384} 385array(1) { 386 [0]=> 387 string(9) "100000000" 388} 389array(1) { 390 [0]=> 391 string(11) "-1000000000" 392} 393array(1) { 394 [0]=> 395 string(2) "10" 396} 397array(1) { 398 [0]=> 399 string(7) "1050000" 400} 401bool(false) 402 403-- iteration 6 -- 404array(1) { 405 [0]=> 406 string(11) "-2147483649" 407} 408array(1) { 409 [0]=> 410 string(10) "2147483648" 411} 412array(1) { 413 [0]=> 414 string(11) "-2147483649" 415} 416array(1) { 417 [0]=> 418 string(11) "34359738369" 419} 420array(1) { 421 [0]=> 422 string(10) "2147483649" 423} 424array(1) { 425 [0]=> 426 string(11) "-2147483649" 427} 428array(1) { 429 [0]=> 430 string(1) "0" 431} 432array(1) { 433 [0]=> 434 string(4) "-0.1" 435} 436array(1) { 437 [0]=> 438 string(1) "1" 439} 440array(1) { 441 [0]=> 442 string(6) "100000" 443} 444array(1) { 445 [0]=> 446 string(8) "-1000000" 447} 448array(1) { 449 [0]=> 450 string(9) "100000000" 451} 452array(1) { 453 [0]=> 454 string(11) "-1000000000" 455} 456array(1) { 457 [0]=> 458 string(2) "10" 459} 460array(1) { 461 [0]=> 462 string(7) "1050000" 463} 464bool(false) 465 466-- iteration 7 -- 467 468Warning: fscanf(): Bad scan conversion character " " in %s on line %d 469NULL 470 471Warning: fscanf(): Bad scan conversion character " " in %s on line %d 472NULL 473 474Warning: fscanf(): Bad scan conversion character " " in %s on line %d 475NULL 476 477Warning: fscanf(): Bad scan conversion character " " in %s on line %d 478NULL 479 480Warning: fscanf(): Bad scan conversion character " " in %s on line %d 481NULL 482 483Warning: fscanf(): Bad scan conversion character " " in %s on line %d 484NULL 485 486Warning: fscanf(): Bad scan conversion character " " in %s on line %d 487NULL 488 489Warning: fscanf(): Bad scan conversion character " " in %s on line %d 490NULL 491 492Warning: fscanf(): Bad scan conversion character " " in %s on line %d 493NULL 494 495Warning: fscanf(): Bad scan conversion character " " in %s on line %d 496NULL 497 498Warning: fscanf(): Bad scan conversion character " " in %s on line %d 499NULL 500 501Warning: fscanf(): Bad scan conversion character " " in %s on line %d 502NULL 503 504Warning: fscanf(): Bad scan conversion character " " in %s on line %d 505NULL 506 507Warning: fscanf(): Bad scan conversion character " " in %s on line %d 508NULL 509 510Warning: fscanf(): Bad scan conversion character " " in %s on line %d 511NULL 512bool(false) 513 514-- iteration 8 -- 515array(1) { 516 [0]=> 517 string(11) "-2147483649" 518} 519array(1) { 520 [0]=> 521 string(10) "2147483648" 522} 523array(1) { 524 [0]=> 525 string(11) "-2147483649" 526} 527array(1) { 528 [0]=> 529 string(11) "34359738369" 530} 531array(1) { 532 [0]=> 533 string(10) "2147483649" 534} 535array(1) { 536 [0]=> 537 string(11) "-2147483649" 538} 539array(1) { 540 [0]=> 541 string(1) "0" 542} 543array(1) { 544 [0]=> 545 string(4) "-0.1" 546} 547array(1) { 548 [0]=> 549 string(1) "1" 550} 551array(1) { 552 [0]=> 553 string(6) "100000" 554} 555array(1) { 556 [0]=> 557 string(8) "-1000000" 558} 559array(1) { 560 [0]=> 561 string(9) "100000000" 562} 563array(1) { 564 [0]=> 565 string(11) "-1000000000" 566} 567array(1) { 568 [0]=> 569 string(2) "10" 570} 571array(1) { 572 [0]=> 573 string(7) "1050000" 574} 575bool(false) 576 577-- iteration 9 -- 578array(1) { 579 [0]=> 580 string(11) "-2147483649" 581} 582array(1) { 583 [0]=> 584 string(10) "2147483648" 585} 586array(1) { 587 [0]=> 588 string(11) "-2147483649" 589} 590array(1) { 591 [0]=> 592 string(11) "34359738369" 593} 594array(1) { 595 [0]=> 596 string(10) "2147483649" 597} 598array(1) { 599 [0]=> 600 string(11) "-2147483649" 601} 602array(1) { 603 [0]=> 604 string(1) "0" 605} 606array(1) { 607 [0]=> 608 string(4) "-0.1" 609} 610array(1) { 611 [0]=> 612 string(1) "1" 613} 614array(1) { 615 [0]=> 616 string(6) "100000" 617} 618array(1) { 619 [0]=> 620 string(8) "-1000000" 621} 622array(1) { 623 [0]=> 624 string(9) "100000000" 625} 626array(1) { 627 [0]=> 628 string(11) "-1000000000" 629} 630array(1) { 631 [0]=> 632 string(2) "10" 633} 634array(1) { 635 [0]=> 636 string(7) "1050000" 637} 638bool(false) 639 640-- iteration 10 -- 641array(1) { 642 [0]=> 643 string(4) "-214" 644} 645array(1) { 646 [0]=> 647 string(4) "2147" 648} 649array(1) { 650 [0]=> 651 string(4) "-214" 652} 653array(1) { 654 [0]=> 655 string(4) "3435" 656} 657array(1) { 658 [0]=> 659 string(4) "2147" 660} 661array(1) { 662 [0]=> 663 string(4) "-214" 664} 665array(1) { 666 [0]=> 667 string(1) "0" 668} 669array(1) { 670 [0]=> 671 string(4) "-0.1" 672} 673array(1) { 674 [0]=> 675 string(1) "1" 676} 677array(1) { 678 [0]=> 679 string(4) "1000" 680} 681array(1) { 682 [0]=> 683 string(4) "-100" 684} 685array(1) { 686 [0]=> 687 string(4) "1000" 688} 689array(1) { 690 [0]=> 691 string(4) "-100" 692} 693array(1) { 694 [0]=> 695 string(2) "10" 696} 697array(1) { 698 [0]=> 699 string(4) "1050" 700} 701bool(false) 702 703-- iteration 11 -- 704array(1) { 705 [0]=> 706 string(11) "-2147483649" 707} 708array(1) { 709 [0]=> 710 string(10) "2147483648" 711} 712array(1) { 713 [0]=> 714 string(11) "-2147483649" 715} 716array(1) { 717 [0]=> 718 string(11) "34359738369" 719} 720array(1) { 721 [0]=> 722 string(10) "2147483649" 723} 724array(1) { 725 [0]=> 726 string(11) "-2147483649" 727} 728array(1) { 729 [0]=> 730 string(1) "0" 731} 732array(1) { 733 [0]=> 734 string(4) "-0.1" 735} 736array(1) { 737 [0]=> 738 string(1) "1" 739} 740array(1) { 741 [0]=> 742 string(6) "100000" 743} 744array(1) { 745 [0]=> 746 string(8) "-1000000" 747} 748array(1) { 749 [0]=> 750 string(9) "100000000" 751} 752array(1) { 753 [0]=> 754 string(11) "-1000000000" 755} 756array(1) { 757 [0]=> 758 string(2) "10" 759} 760array(1) { 761 [0]=> 762 string(7) "1050000" 763} 764bool(false) 765 766-- iteration 12 -- 767array(1) { 768 [0]=> 769 NULL 770} 771array(1) { 772 [0]=> 773 string(10) "2147483648" 774} 775array(1) { 776 [0]=> 777 NULL 778} 779array(1) { 780 [0]=> 781 string(11) "34359738369" 782} 783array(1) { 784 [0]=> 785 string(10) "2147483649" 786} 787array(1) { 788 [0]=> 789 NULL 790} 791array(1) { 792 [0]=> 793 string(1) "0" 794} 795array(1) { 796 [0]=> 797 NULL 798} 799array(1) { 800 [0]=> 801 string(1) "1" 802} 803array(1) { 804 [0]=> 805 string(6) "100000" 806} 807array(1) { 808 [0]=> 809 NULL 810} 811array(1) { 812 [0]=> 813 string(9) "100000000" 814} 815array(1) { 816 [0]=> 817 NULL 818} 819array(1) { 820 [0]=> 821 string(2) "10" 822} 823array(1) { 824 [0]=> 825 string(7) "1050000" 826} 827bool(false) 828 829-- iteration 13 -- 830array(0) { 831} 832array(0) { 833} 834array(0) { 835} 836array(0) { 837} 838array(0) { 839} 840array(0) { 841} 842array(0) { 843} 844array(0) { 845} 846array(0) { 847} 848array(0) { 849} 850array(0) { 851} 852array(0) { 853} 854array(0) { 855} 856array(0) { 857} 858array(0) { 859} 860bool(false) 861 862*** Done *** 863