1--TEST-- 2parse_url() function 3--FILE-- 4<?php 5$sample_urls = array ( 6'', 7'64.246.30.37', 8'http://64.246.30.37', 9'http://64.246.30.37/', 10'64.246.30.37/', 11'64.246.30.37:80/', 12'php.net', 13'php.net/', 14'http://php.net', 15'http://php.net/', 16'www.php.net', 17'www.php.net/', 18'http://www.php.net', 19'http://www.php.net/', 20'www.php.net:80', 21'http://www.php.net:80', 22'http://www.php.net:80/', 23'http://www.php.net/index.php', 24'www.php.net/?', 25'www.php.net:80/?', 26'http://www.php.net/?', 27'http://www.php.net:80/?', 28'http://www.php.net:80/index.php', 29'http://www.php.net:80/foo/bar/index.php', 30'http://www.php.net:80/this/is/a/very/deep/directory/structure/and/file.php', 31'http://www.php.net:80/this/is/a/very/deep/directory/structure/and/file.php?lots=1&of=2¶meters=3&too=4&here=5', 32'http://www.php.net:80/this/is/a/very/deep/directory/structure/and/', 33'http://www.php.net:80/this/is/a/very/deep/directory/structure/and/file.php', 34'http://www.php.net:80/this/../a/../deep/directory', 35'http://www.php.net:80/this/../a/../deep/directory/', 36'http://www.php.net:80/this/is/a/very/deep/directory/../file.php', 37'http://www.php.net:80/index.php', 38'http://www.php.net:80/index.php?', 39'http://www.php.net:80/#foo', 40'http://www.php.net:80/?#', 41'http://www.php.net:80/?test=1', 42'http://www.php.net/?test=1&', 43'http://www.php.net:80/?&', 44'http://www.php.net:80/index.php?test=1&', 45'http://www.php.net/index.php?&', 46'http://www.php.net:80/index.php?foo&', 47'http://www.php.net/index.php?&foo', 48'http://www.php.net:80/index.php?test=1&test2=char&test3=mixesCI', 49'www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123', 50'http://secret@www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123', 51'http://secret:@www.php.net/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123', 52'http://:hideout@www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123', 53'http://secret:hideout@www.php.net/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123', 54'http://secret@hideout@www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123', 55'http://secret:hid:out@www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123', 56'nntp://news.php.net', 57'ftp://ftp.gnu.org/gnu/glic/glibc.tar.gz', 58'zlib:http://foo@bar', 59'zlib:filename.txt', 60'zlib:/path/to/my/file/file.txt', 61'foo://foo@bar', 62'mailto:me@mydomain.com', 63'/foo.php?a=b&c=d', 64'foo.php?a=b&c=d', 65'http://user:passwd@www.example.com:8080?bar=1&boom=0', 66'file:///path/to/file', 67'file://path/to/file', 68'file:/path/to/file', 69'http://1.2.3.4:/abc.asp?a=1&b=2', 70'http://foo.com#bar', 71'scheme:', 72'foo+bar://baz@bang/bla', 73'gg:9130731', 74'http://user:@pass@host/path?argument?value#etc', 75); 76 77 foreach ($sample_urls as $url) { 78 echo "\n--> $url: "; 79 var_dump(@parse_url($url)); 80 } 81 82 $url = 'http://secret:hideout@www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123'; 83 foreach (array(PHP_URL_SCHEME,PHP_URL_HOST,PHP_URL_PORT,PHP_URL_USER,PHP_URL_PASS,PHP_URL_PATH,PHP_URL_QUERY,PHP_URL_FRAGMENT) as $v) { 84 var_dump(parse_url($url, $v)); 85 } 86?> 87--EXPECT-- 88--> : array(1) { 89 ["path"]=> 90 string(0) "" 91} 92 93--> 64.246.30.37: array(1) { 94 ["path"]=> 95 string(12) "64.246.30.37" 96} 97 98--> http://64.246.30.37: array(2) { 99 ["scheme"]=> 100 string(4) "http" 101 ["host"]=> 102 string(12) "64.246.30.37" 103} 104 105--> http://64.246.30.37/: array(3) { 106 ["scheme"]=> 107 string(4) "http" 108 ["host"]=> 109 string(12) "64.246.30.37" 110 ["path"]=> 111 string(1) "/" 112} 113 114--> 64.246.30.37/: array(1) { 115 ["path"]=> 116 string(13) "64.246.30.37/" 117} 118 119--> 64.246.30.37:80/: array(3) { 120 ["host"]=> 121 string(12) "64.246.30.37" 122 ["port"]=> 123 int(80) 124 ["path"]=> 125 string(1) "/" 126} 127 128--> php.net: array(1) { 129 ["path"]=> 130 string(7) "php.net" 131} 132 133--> php.net/: array(1) { 134 ["path"]=> 135 string(8) "php.net/" 136} 137 138--> http://php.net: array(2) { 139 ["scheme"]=> 140 string(4) "http" 141 ["host"]=> 142 string(7) "php.net" 143} 144 145--> http://php.net/: array(3) { 146 ["scheme"]=> 147 string(4) "http" 148 ["host"]=> 149 string(7) "php.net" 150 ["path"]=> 151 string(1) "/" 152} 153 154--> www.php.net: array(1) { 155 ["path"]=> 156 string(11) "www.php.net" 157} 158 159--> www.php.net/: array(1) { 160 ["path"]=> 161 string(12) "www.php.net/" 162} 163 164--> http://www.php.net: array(2) { 165 ["scheme"]=> 166 string(4) "http" 167 ["host"]=> 168 string(11) "www.php.net" 169} 170 171--> http://www.php.net/: array(3) { 172 ["scheme"]=> 173 string(4) "http" 174 ["host"]=> 175 string(11) "www.php.net" 176 ["path"]=> 177 string(1) "/" 178} 179 180--> www.php.net:80: array(2) { 181 ["host"]=> 182 string(11) "www.php.net" 183 ["port"]=> 184 int(80) 185} 186 187--> http://www.php.net:80: array(3) { 188 ["scheme"]=> 189 string(4) "http" 190 ["host"]=> 191 string(11) "www.php.net" 192 ["port"]=> 193 int(80) 194} 195 196--> http://www.php.net:80/: array(4) { 197 ["scheme"]=> 198 string(4) "http" 199 ["host"]=> 200 string(11) "www.php.net" 201 ["port"]=> 202 int(80) 203 ["path"]=> 204 string(1) "/" 205} 206 207--> http://www.php.net/index.php: array(3) { 208 ["scheme"]=> 209 string(4) "http" 210 ["host"]=> 211 string(11) "www.php.net" 212 ["path"]=> 213 string(10) "/index.php" 214} 215 216--> www.php.net/?: array(1) { 217 ["path"]=> 218 string(12) "www.php.net/" 219} 220 221--> www.php.net:80/?: array(3) { 222 ["host"]=> 223 string(11) "www.php.net" 224 ["port"]=> 225 int(80) 226 ["path"]=> 227 string(1) "/" 228} 229 230--> http://www.php.net/?: array(3) { 231 ["scheme"]=> 232 string(4) "http" 233 ["host"]=> 234 string(11) "www.php.net" 235 ["path"]=> 236 string(1) "/" 237} 238 239--> http://www.php.net:80/?: array(4) { 240 ["scheme"]=> 241 string(4) "http" 242 ["host"]=> 243 string(11) "www.php.net" 244 ["port"]=> 245 int(80) 246 ["path"]=> 247 string(1) "/" 248} 249 250--> http://www.php.net:80/index.php: array(4) { 251 ["scheme"]=> 252 string(4) "http" 253 ["host"]=> 254 string(11) "www.php.net" 255 ["port"]=> 256 int(80) 257 ["path"]=> 258 string(10) "/index.php" 259} 260 261--> http://www.php.net:80/foo/bar/index.php: array(4) { 262 ["scheme"]=> 263 string(4) "http" 264 ["host"]=> 265 string(11) "www.php.net" 266 ["port"]=> 267 int(80) 268 ["path"]=> 269 string(18) "/foo/bar/index.php" 270} 271 272--> http://www.php.net:80/this/is/a/very/deep/directory/structure/and/file.php: array(4) { 273 ["scheme"]=> 274 string(4) "http" 275 ["host"]=> 276 string(11) "www.php.net" 277 ["port"]=> 278 int(80) 279 ["path"]=> 280 string(53) "/this/is/a/very/deep/directory/structure/and/file.php" 281} 282 283--> http://www.php.net:80/this/is/a/very/deep/directory/structure/and/file.php?lots=1&of=2¶meters=3&too=4&here=5: array(5) { 284 ["scheme"]=> 285 string(4) "http" 286 ["host"]=> 287 string(11) "www.php.net" 288 ["port"]=> 289 int(80) 290 ["path"]=> 291 string(53) "/this/is/a/very/deep/directory/structure/and/file.php" 292 ["query"]=> 293 string(37) "lots=1&of=2¶meters=3&too=4&here=5" 294} 295 296--> http://www.php.net:80/this/is/a/very/deep/directory/structure/and/: array(4) { 297 ["scheme"]=> 298 string(4) "http" 299 ["host"]=> 300 string(11) "www.php.net" 301 ["port"]=> 302 int(80) 303 ["path"]=> 304 string(45) "/this/is/a/very/deep/directory/structure/and/" 305} 306 307--> http://www.php.net:80/this/is/a/very/deep/directory/structure/and/file.php: array(4) { 308 ["scheme"]=> 309 string(4) "http" 310 ["host"]=> 311 string(11) "www.php.net" 312 ["port"]=> 313 int(80) 314 ["path"]=> 315 string(53) "/this/is/a/very/deep/directory/structure/and/file.php" 316} 317 318--> http://www.php.net:80/this/../a/../deep/directory: array(4) { 319 ["scheme"]=> 320 string(4) "http" 321 ["host"]=> 322 string(11) "www.php.net" 323 ["port"]=> 324 int(80) 325 ["path"]=> 326 string(28) "/this/../a/../deep/directory" 327} 328 329--> http://www.php.net:80/this/../a/../deep/directory/: array(4) { 330 ["scheme"]=> 331 string(4) "http" 332 ["host"]=> 333 string(11) "www.php.net" 334 ["port"]=> 335 int(80) 336 ["path"]=> 337 string(29) "/this/../a/../deep/directory/" 338} 339 340--> http://www.php.net:80/this/is/a/very/deep/directory/../file.php: array(4) { 341 ["scheme"]=> 342 string(4) "http" 343 ["host"]=> 344 string(11) "www.php.net" 345 ["port"]=> 346 int(80) 347 ["path"]=> 348 string(42) "/this/is/a/very/deep/directory/../file.php" 349} 350 351--> http://www.php.net:80/index.php: array(4) { 352 ["scheme"]=> 353 string(4) "http" 354 ["host"]=> 355 string(11) "www.php.net" 356 ["port"]=> 357 int(80) 358 ["path"]=> 359 string(10) "/index.php" 360} 361 362--> http://www.php.net:80/index.php?: array(4) { 363 ["scheme"]=> 364 string(4) "http" 365 ["host"]=> 366 string(11) "www.php.net" 367 ["port"]=> 368 int(80) 369 ["path"]=> 370 string(10) "/index.php" 371} 372 373--> http://www.php.net:80/#foo: array(5) { 374 ["scheme"]=> 375 string(4) "http" 376 ["host"]=> 377 string(11) "www.php.net" 378 ["port"]=> 379 int(80) 380 ["path"]=> 381 string(1) "/" 382 ["fragment"]=> 383 string(3) "foo" 384} 385 386--> http://www.php.net:80/?#: array(4) { 387 ["scheme"]=> 388 string(4) "http" 389 ["host"]=> 390 string(11) "www.php.net" 391 ["port"]=> 392 int(80) 393 ["path"]=> 394 string(1) "/" 395} 396 397--> http://www.php.net:80/?test=1: array(5) { 398 ["scheme"]=> 399 string(4) "http" 400 ["host"]=> 401 string(11) "www.php.net" 402 ["port"]=> 403 int(80) 404 ["path"]=> 405 string(1) "/" 406 ["query"]=> 407 string(6) "test=1" 408} 409 410--> http://www.php.net/?test=1&: array(4) { 411 ["scheme"]=> 412 string(4) "http" 413 ["host"]=> 414 string(11) "www.php.net" 415 ["path"]=> 416 string(1) "/" 417 ["query"]=> 418 string(7) "test=1&" 419} 420 421--> http://www.php.net:80/?&: array(5) { 422 ["scheme"]=> 423 string(4) "http" 424 ["host"]=> 425 string(11) "www.php.net" 426 ["port"]=> 427 int(80) 428 ["path"]=> 429 string(1) "/" 430 ["query"]=> 431 string(1) "&" 432} 433 434--> http://www.php.net:80/index.php?test=1&: array(5) { 435 ["scheme"]=> 436 string(4) "http" 437 ["host"]=> 438 string(11) "www.php.net" 439 ["port"]=> 440 int(80) 441 ["path"]=> 442 string(10) "/index.php" 443 ["query"]=> 444 string(7) "test=1&" 445} 446 447--> http://www.php.net/index.php?&: array(4) { 448 ["scheme"]=> 449 string(4) "http" 450 ["host"]=> 451 string(11) "www.php.net" 452 ["path"]=> 453 string(10) "/index.php" 454 ["query"]=> 455 string(1) "&" 456} 457 458--> http://www.php.net:80/index.php?foo&: array(5) { 459 ["scheme"]=> 460 string(4) "http" 461 ["host"]=> 462 string(11) "www.php.net" 463 ["port"]=> 464 int(80) 465 ["path"]=> 466 string(10) "/index.php" 467 ["query"]=> 468 string(4) "foo&" 469} 470 471--> http://www.php.net/index.php?&foo: array(4) { 472 ["scheme"]=> 473 string(4) "http" 474 ["host"]=> 475 string(11) "www.php.net" 476 ["path"]=> 477 string(10) "/index.php" 478 ["query"]=> 479 string(4) "&foo" 480} 481 482--> http://www.php.net:80/index.php?test=1&test2=char&test3=mixesCI: array(5) { 483 ["scheme"]=> 484 string(4) "http" 485 ["host"]=> 486 string(11) "www.php.net" 487 ["port"]=> 488 int(80) 489 ["path"]=> 490 string(10) "/index.php" 491 ["query"]=> 492 string(31) "test=1&test2=char&test3=mixesCI" 493} 494 495--> www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123: array(5) { 496 ["host"]=> 497 string(11) "www.php.net" 498 ["port"]=> 499 int(80) 500 ["path"]=> 501 string(10) "/index.php" 502 ["query"]=> 503 string(31) "test=1&test2=char&test3=mixesCI" 504 ["fragment"]=> 505 string(16) "some_page_ref123" 506} 507 508--> http://secret@www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123: array(7) { 509 ["scheme"]=> 510 string(4) "http" 511 ["host"]=> 512 string(11) "www.php.net" 513 ["port"]=> 514 int(80) 515 ["user"]=> 516 string(6) "secret" 517 ["path"]=> 518 string(10) "/index.php" 519 ["query"]=> 520 string(31) "test=1&test2=char&test3=mixesCI" 521 ["fragment"]=> 522 string(16) "some_page_ref123" 523} 524 525--> http://secret:@www.php.net/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123: array(7) { 526 ["scheme"]=> 527 string(4) "http" 528 ["host"]=> 529 string(11) "www.php.net" 530 ["user"]=> 531 string(6) "secret" 532 ["pass"]=> 533 string(0) "" 534 ["path"]=> 535 string(10) "/index.php" 536 ["query"]=> 537 string(31) "test=1&test2=char&test3=mixesCI" 538 ["fragment"]=> 539 string(16) "some_page_ref123" 540} 541 542--> http://:hideout@www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123: array(8) { 543 ["scheme"]=> 544 string(4) "http" 545 ["host"]=> 546 string(11) "www.php.net" 547 ["port"]=> 548 int(80) 549 ["user"]=> 550 string(0) "" 551 ["pass"]=> 552 string(7) "hideout" 553 ["path"]=> 554 string(10) "/index.php" 555 ["query"]=> 556 string(31) "test=1&test2=char&test3=mixesCI" 557 ["fragment"]=> 558 string(16) "some_page_ref123" 559} 560 561--> http://secret:hideout@www.php.net/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123: array(7) { 562 ["scheme"]=> 563 string(4) "http" 564 ["host"]=> 565 string(11) "www.php.net" 566 ["user"]=> 567 string(6) "secret" 568 ["pass"]=> 569 string(7) "hideout" 570 ["path"]=> 571 string(10) "/index.php" 572 ["query"]=> 573 string(31) "test=1&test2=char&test3=mixesCI" 574 ["fragment"]=> 575 string(16) "some_page_ref123" 576} 577 578--> http://secret@hideout@www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123: array(7) { 579 ["scheme"]=> 580 string(4) "http" 581 ["host"]=> 582 string(11) "www.php.net" 583 ["port"]=> 584 int(80) 585 ["user"]=> 586 string(14) "secret@hideout" 587 ["path"]=> 588 string(10) "/index.php" 589 ["query"]=> 590 string(31) "test=1&test2=char&test3=mixesCI" 591 ["fragment"]=> 592 string(16) "some_page_ref123" 593} 594 595--> http://secret:hid:out@www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123: array(8) { 596 ["scheme"]=> 597 string(4) "http" 598 ["host"]=> 599 string(11) "www.php.net" 600 ["port"]=> 601 int(80) 602 ["user"]=> 603 string(6) "secret" 604 ["pass"]=> 605 string(7) "hid:out" 606 ["path"]=> 607 string(10) "/index.php" 608 ["query"]=> 609 string(31) "test=1&test2=char&test3=mixesCI" 610 ["fragment"]=> 611 string(16) "some_page_ref123" 612} 613 614--> nntp://news.php.net: array(2) { 615 ["scheme"]=> 616 string(4) "nntp" 617 ["host"]=> 618 string(12) "news.php.net" 619} 620 621--> ftp://ftp.gnu.org/gnu/glic/glibc.tar.gz: array(3) { 622 ["scheme"]=> 623 string(3) "ftp" 624 ["host"]=> 625 string(11) "ftp.gnu.org" 626 ["path"]=> 627 string(22) "/gnu/glic/glibc.tar.gz" 628} 629 630--> zlib:http://foo@bar: array(2) { 631 ["scheme"]=> 632 string(4) "zlib" 633 ["path"]=> 634 string(14) "http://foo@bar" 635} 636 637--> zlib:filename.txt: array(2) { 638 ["scheme"]=> 639 string(4) "zlib" 640 ["path"]=> 641 string(12) "filename.txt" 642} 643 644--> zlib:/path/to/my/file/file.txt: array(2) { 645 ["scheme"]=> 646 string(4) "zlib" 647 ["path"]=> 648 string(25) "/path/to/my/file/file.txt" 649} 650 651--> foo://foo@bar: array(3) { 652 ["scheme"]=> 653 string(3) "foo" 654 ["host"]=> 655 string(3) "bar" 656 ["user"]=> 657 string(3) "foo" 658} 659 660--> mailto:me@mydomain.com: array(2) { 661 ["scheme"]=> 662 string(6) "mailto" 663 ["path"]=> 664 string(15) "me@mydomain.com" 665} 666 667--> /foo.php?a=b&c=d: array(2) { 668 ["path"]=> 669 string(8) "/foo.php" 670 ["query"]=> 671 string(7) "a=b&c=d" 672} 673 674--> foo.php?a=b&c=d: array(2) { 675 ["path"]=> 676 string(7) "foo.php" 677 ["query"]=> 678 string(7) "a=b&c=d" 679} 680 681--> http://user:passwd@www.example.com:8080?bar=1&boom=0: array(6) { 682 ["scheme"]=> 683 string(4) "http" 684 ["host"]=> 685 string(15) "www.example.com" 686 ["port"]=> 687 int(8080) 688 ["user"]=> 689 string(4) "user" 690 ["pass"]=> 691 string(6) "passwd" 692 ["query"]=> 693 string(12) "bar=1&boom=0" 694} 695 696--> file:///path/to/file: array(2) { 697 ["scheme"]=> 698 string(4) "file" 699 ["path"]=> 700 string(13) "/path/to/file" 701} 702 703--> file://path/to/file: array(3) { 704 ["scheme"]=> 705 string(4) "file" 706 ["host"]=> 707 string(4) "path" 708 ["path"]=> 709 string(8) "/to/file" 710} 711 712--> file:/path/to/file: array(2) { 713 ["scheme"]=> 714 string(4) "file" 715 ["path"]=> 716 string(13) "/path/to/file" 717} 718 719--> http://1.2.3.4:/abc.asp?a=1&b=2: array(4) { 720 ["scheme"]=> 721 string(4) "http" 722 ["host"]=> 723 string(7) "1.2.3.4" 724 ["path"]=> 725 string(8) "/abc.asp" 726 ["query"]=> 727 string(7) "a=1&b=2" 728} 729 730--> http://foo.com#bar: array(3) { 731 ["scheme"]=> 732 string(4) "http" 733 ["host"]=> 734 string(7) "foo.com" 735 ["fragment"]=> 736 string(3) "bar" 737} 738 739--> scheme:: array(1) { 740 ["scheme"]=> 741 string(6) "scheme" 742} 743 744--> foo+bar://baz@bang/bla: array(4) { 745 ["scheme"]=> 746 string(7) "foo+bar" 747 ["host"]=> 748 string(4) "bang" 749 ["user"]=> 750 string(3) "baz" 751 ["path"]=> 752 string(4) "/bla" 753} 754 755--> gg:9130731: array(2) { 756 ["scheme"]=> 757 string(2) "gg" 758 ["path"]=> 759 string(7) "9130731" 760} 761 762--> http://user:@pass@host/path?argument?value#etc: array(7) { 763 ["scheme"]=> 764 string(4) "http" 765 ["host"]=> 766 string(4) "host" 767 ["user"]=> 768 string(4) "user" 769 ["pass"]=> 770 string(5) "@pass" 771 ["path"]=> 772 string(5) "/path" 773 ["query"]=> 774 string(14) "argument?value" 775 ["fragment"]=> 776 string(3) "etc" 777} 778string(4) "http" 779string(11) "www.php.net" 780int(80) 781string(6) "secret" 782string(7) "hideout" 783string(10) "/index.php" 784string(31) "test=1&test2=char&test3=mixesCI" 785string(16) "some_page_ref123" 786