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(2) { 217 ["path"]=> 218 string(12) "www.php.net/" 219 ["query"]=> 220 string(0) "" 221} 222 223--> www.php.net:80/?: array(4) { 224 ["host"]=> 225 string(11) "www.php.net" 226 ["port"]=> 227 int(80) 228 ["path"]=> 229 string(1) "/" 230 ["query"]=> 231 string(0) "" 232} 233 234--> http://www.php.net/?: array(4) { 235 ["scheme"]=> 236 string(4) "http" 237 ["host"]=> 238 string(11) "www.php.net" 239 ["path"]=> 240 string(1) "/" 241 ["query"]=> 242 string(0) "" 243} 244 245--> http://www.php.net:80/?: array(5) { 246 ["scheme"]=> 247 string(4) "http" 248 ["host"]=> 249 string(11) "www.php.net" 250 ["port"]=> 251 int(80) 252 ["path"]=> 253 string(1) "/" 254 ["query"]=> 255 string(0) "" 256} 257 258--> http://www.php.net:80/index.php: array(4) { 259 ["scheme"]=> 260 string(4) "http" 261 ["host"]=> 262 string(11) "www.php.net" 263 ["port"]=> 264 int(80) 265 ["path"]=> 266 string(10) "/index.php" 267} 268 269--> http://www.php.net:80/foo/bar/index.php: array(4) { 270 ["scheme"]=> 271 string(4) "http" 272 ["host"]=> 273 string(11) "www.php.net" 274 ["port"]=> 275 int(80) 276 ["path"]=> 277 string(18) "/foo/bar/index.php" 278} 279 280--> http://www.php.net:80/this/is/a/very/deep/directory/structure/and/file.php: array(4) { 281 ["scheme"]=> 282 string(4) "http" 283 ["host"]=> 284 string(11) "www.php.net" 285 ["port"]=> 286 int(80) 287 ["path"]=> 288 string(53) "/this/is/a/very/deep/directory/structure/and/file.php" 289} 290 291--> 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) { 292 ["scheme"]=> 293 string(4) "http" 294 ["host"]=> 295 string(11) "www.php.net" 296 ["port"]=> 297 int(80) 298 ["path"]=> 299 string(53) "/this/is/a/very/deep/directory/structure/and/file.php" 300 ["query"]=> 301 string(37) "lots=1&of=2¶meters=3&too=4&here=5" 302} 303 304--> http://www.php.net:80/this/is/a/very/deep/directory/structure/and/: array(4) { 305 ["scheme"]=> 306 string(4) "http" 307 ["host"]=> 308 string(11) "www.php.net" 309 ["port"]=> 310 int(80) 311 ["path"]=> 312 string(45) "/this/is/a/very/deep/directory/structure/and/" 313} 314 315--> http://www.php.net:80/this/is/a/very/deep/directory/structure/and/file.php: array(4) { 316 ["scheme"]=> 317 string(4) "http" 318 ["host"]=> 319 string(11) "www.php.net" 320 ["port"]=> 321 int(80) 322 ["path"]=> 323 string(53) "/this/is/a/very/deep/directory/structure/and/file.php" 324} 325 326--> http://www.php.net:80/this/../a/../deep/directory: array(4) { 327 ["scheme"]=> 328 string(4) "http" 329 ["host"]=> 330 string(11) "www.php.net" 331 ["port"]=> 332 int(80) 333 ["path"]=> 334 string(28) "/this/../a/../deep/directory" 335} 336 337--> http://www.php.net:80/this/../a/../deep/directory/: array(4) { 338 ["scheme"]=> 339 string(4) "http" 340 ["host"]=> 341 string(11) "www.php.net" 342 ["port"]=> 343 int(80) 344 ["path"]=> 345 string(29) "/this/../a/../deep/directory/" 346} 347 348--> http://www.php.net:80/this/is/a/very/deep/directory/../file.php: array(4) { 349 ["scheme"]=> 350 string(4) "http" 351 ["host"]=> 352 string(11) "www.php.net" 353 ["port"]=> 354 int(80) 355 ["path"]=> 356 string(42) "/this/is/a/very/deep/directory/../file.php" 357} 358 359--> http://www.php.net:80/index.php: array(4) { 360 ["scheme"]=> 361 string(4) "http" 362 ["host"]=> 363 string(11) "www.php.net" 364 ["port"]=> 365 int(80) 366 ["path"]=> 367 string(10) "/index.php" 368} 369 370--> http://www.php.net:80/index.php?: array(5) { 371 ["scheme"]=> 372 string(4) "http" 373 ["host"]=> 374 string(11) "www.php.net" 375 ["port"]=> 376 int(80) 377 ["path"]=> 378 string(10) "/index.php" 379 ["query"]=> 380 string(0) "" 381} 382 383--> http://www.php.net:80/#foo: array(5) { 384 ["scheme"]=> 385 string(4) "http" 386 ["host"]=> 387 string(11) "www.php.net" 388 ["port"]=> 389 int(80) 390 ["path"]=> 391 string(1) "/" 392 ["fragment"]=> 393 string(3) "foo" 394} 395 396--> http://www.php.net:80/?#: array(6) { 397 ["scheme"]=> 398 string(4) "http" 399 ["host"]=> 400 string(11) "www.php.net" 401 ["port"]=> 402 int(80) 403 ["path"]=> 404 string(1) "/" 405 ["query"]=> 406 string(0) "" 407 ["fragment"]=> 408 string(0) "" 409} 410 411--> http://www.php.net:80/?test=1: array(5) { 412 ["scheme"]=> 413 string(4) "http" 414 ["host"]=> 415 string(11) "www.php.net" 416 ["port"]=> 417 int(80) 418 ["path"]=> 419 string(1) "/" 420 ["query"]=> 421 string(6) "test=1" 422} 423 424--> http://www.php.net/?test=1&: array(4) { 425 ["scheme"]=> 426 string(4) "http" 427 ["host"]=> 428 string(11) "www.php.net" 429 ["path"]=> 430 string(1) "/" 431 ["query"]=> 432 string(7) "test=1&" 433} 434 435--> http://www.php.net:80/?&: array(5) { 436 ["scheme"]=> 437 string(4) "http" 438 ["host"]=> 439 string(11) "www.php.net" 440 ["port"]=> 441 int(80) 442 ["path"]=> 443 string(1) "/" 444 ["query"]=> 445 string(1) "&" 446} 447 448--> http://www.php.net:80/index.php?test=1&: array(5) { 449 ["scheme"]=> 450 string(4) "http" 451 ["host"]=> 452 string(11) "www.php.net" 453 ["port"]=> 454 int(80) 455 ["path"]=> 456 string(10) "/index.php" 457 ["query"]=> 458 string(7) "test=1&" 459} 460 461--> http://www.php.net/index.php?&: array(4) { 462 ["scheme"]=> 463 string(4) "http" 464 ["host"]=> 465 string(11) "www.php.net" 466 ["path"]=> 467 string(10) "/index.php" 468 ["query"]=> 469 string(1) "&" 470} 471 472--> http://www.php.net:80/index.php?foo&: array(5) { 473 ["scheme"]=> 474 string(4) "http" 475 ["host"]=> 476 string(11) "www.php.net" 477 ["port"]=> 478 int(80) 479 ["path"]=> 480 string(10) "/index.php" 481 ["query"]=> 482 string(4) "foo&" 483} 484 485--> http://www.php.net/index.php?&foo: array(4) { 486 ["scheme"]=> 487 string(4) "http" 488 ["host"]=> 489 string(11) "www.php.net" 490 ["path"]=> 491 string(10) "/index.php" 492 ["query"]=> 493 string(4) "&foo" 494} 495 496--> http://www.php.net:80/index.php?test=1&test2=char&test3=mixesCI: array(5) { 497 ["scheme"]=> 498 string(4) "http" 499 ["host"]=> 500 string(11) "www.php.net" 501 ["port"]=> 502 int(80) 503 ["path"]=> 504 string(10) "/index.php" 505 ["query"]=> 506 string(31) "test=1&test2=char&test3=mixesCI" 507} 508 509--> www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123: array(5) { 510 ["host"]=> 511 string(11) "www.php.net" 512 ["port"]=> 513 int(80) 514 ["path"]=> 515 string(10) "/index.php" 516 ["query"]=> 517 string(31) "test=1&test2=char&test3=mixesCI" 518 ["fragment"]=> 519 string(16) "some_page_ref123" 520} 521 522--> http://secret@www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123: array(7) { 523 ["scheme"]=> 524 string(4) "http" 525 ["host"]=> 526 string(11) "www.php.net" 527 ["port"]=> 528 int(80) 529 ["user"]=> 530 string(6) "secret" 531 ["path"]=> 532 string(10) "/index.php" 533 ["query"]=> 534 string(31) "test=1&test2=char&test3=mixesCI" 535 ["fragment"]=> 536 string(16) "some_page_ref123" 537} 538 539--> http://secret:@www.php.net/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123: array(7) { 540 ["scheme"]=> 541 string(4) "http" 542 ["host"]=> 543 string(11) "www.php.net" 544 ["user"]=> 545 string(6) "secret" 546 ["pass"]=> 547 string(0) "" 548 ["path"]=> 549 string(10) "/index.php" 550 ["query"]=> 551 string(31) "test=1&test2=char&test3=mixesCI" 552 ["fragment"]=> 553 string(16) "some_page_ref123" 554} 555 556--> http://:hideout@www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123: array(8) { 557 ["scheme"]=> 558 string(4) "http" 559 ["host"]=> 560 string(11) "www.php.net" 561 ["port"]=> 562 int(80) 563 ["user"]=> 564 string(0) "" 565 ["pass"]=> 566 string(7) "hideout" 567 ["path"]=> 568 string(10) "/index.php" 569 ["query"]=> 570 string(31) "test=1&test2=char&test3=mixesCI" 571 ["fragment"]=> 572 string(16) "some_page_ref123" 573} 574 575--> http://secret:hideout@www.php.net/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123: array(7) { 576 ["scheme"]=> 577 string(4) "http" 578 ["host"]=> 579 string(11) "www.php.net" 580 ["user"]=> 581 string(6) "secret" 582 ["pass"]=> 583 string(7) "hideout" 584 ["path"]=> 585 string(10) "/index.php" 586 ["query"]=> 587 string(31) "test=1&test2=char&test3=mixesCI" 588 ["fragment"]=> 589 string(16) "some_page_ref123" 590} 591 592--> http://secret@hideout@www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123: array(7) { 593 ["scheme"]=> 594 string(4) "http" 595 ["host"]=> 596 string(11) "www.php.net" 597 ["port"]=> 598 int(80) 599 ["user"]=> 600 string(14) "secret@hideout" 601 ["path"]=> 602 string(10) "/index.php" 603 ["query"]=> 604 string(31) "test=1&test2=char&test3=mixesCI" 605 ["fragment"]=> 606 string(16) "some_page_ref123" 607} 608 609--> http://secret:hid:out@www.php.net:80/index.php?test=1&test2=char&test3=mixesCI#some_page_ref123: array(8) { 610 ["scheme"]=> 611 string(4) "http" 612 ["host"]=> 613 string(11) "www.php.net" 614 ["port"]=> 615 int(80) 616 ["user"]=> 617 string(6) "secret" 618 ["pass"]=> 619 string(7) "hid:out" 620 ["path"]=> 621 string(10) "/index.php" 622 ["query"]=> 623 string(31) "test=1&test2=char&test3=mixesCI" 624 ["fragment"]=> 625 string(16) "some_page_ref123" 626} 627 628--> nntp://news.php.net: array(2) { 629 ["scheme"]=> 630 string(4) "nntp" 631 ["host"]=> 632 string(12) "news.php.net" 633} 634 635--> ftp://ftp.gnu.org/gnu/glic/glibc.tar.gz: array(3) { 636 ["scheme"]=> 637 string(3) "ftp" 638 ["host"]=> 639 string(11) "ftp.gnu.org" 640 ["path"]=> 641 string(22) "/gnu/glic/glibc.tar.gz" 642} 643 644--> zlib:http://foo@bar: array(2) { 645 ["scheme"]=> 646 string(4) "zlib" 647 ["path"]=> 648 string(14) "http://foo@bar" 649} 650 651--> zlib:filename.txt: array(2) { 652 ["scheme"]=> 653 string(4) "zlib" 654 ["path"]=> 655 string(12) "filename.txt" 656} 657 658--> zlib:/path/to/my/file/file.txt: array(2) { 659 ["scheme"]=> 660 string(4) "zlib" 661 ["path"]=> 662 string(25) "/path/to/my/file/file.txt" 663} 664 665--> foo://foo@bar: array(3) { 666 ["scheme"]=> 667 string(3) "foo" 668 ["host"]=> 669 string(3) "bar" 670 ["user"]=> 671 string(3) "foo" 672} 673 674--> mailto:me@mydomain.com: array(2) { 675 ["scheme"]=> 676 string(6) "mailto" 677 ["path"]=> 678 string(15) "me@mydomain.com" 679} 680 681--> /foo.php?a=b&c=d: array(2) { 682 ["path"]=> 683 string(8) "/foo.php" 684 ["query"]=> 685 string(7) "a=b&c=d" 686} 687 688--> foo.php?a=b&c=d: array(2) { 689 ["path"]=> 690 string(7) "foo.php" 691 ["query"]=> 692 string(7) "a=b&c=d" 693} 694 695--> http://user:passwd@www.example.com:8080?bar=1&boom=0: array(6) { 696 ["scheme"]=> 697 string(4) "http" 698 ["host"]=> 699 string(15) "www.example.com" 700 ["port"]=> 701 int(8080) 702 ["user"]=> 703 string(4) "user" 704 ["pass"]=> 705 string(6) "passwd" 706 ["query"]=> 707 string(12) "bar=1&boom=0" 708} 709 710--> file:///path/to/file: array(2) { 711 ["scheme"]=> 712 string(4) "file" 713 ["path"]=> 714 string(13) "/path/to/file" 715} 716 717--> file://path/to/file: array(3) { 718 ["scheme"]=> 719 string(4) "file" 720 ["host"]=> 721 string(4) "path" 722 ["path"]=> 723 string(8) "/to/file" 724} 725 726--> file:/path/to/file: array(2) { 727 ["scheme"]=> 728 string(4) "file" 729 ["path"]=> 730 string(13) "/path/to/file" 731} 732 733--> http://1.2.3.4:/abc.asp?a=1&b=2: array(4) { 734 ["scheme"]=> 735 string(4) "http" 736 ["host"]=> 737 string(7) "1.2.3.4" 738 ["path"]=> 739 string(8) "/abc.asp" 740 ["query"]=> 741 string(7) "a=1&b=2" 742} 743 744--> http://foo.com#bar: array(3) { 745 ["scheme"]=> 746 string(4) "http" 747 ["host"]=> 748 string(7) "foo.com" 749 ["fragment"]=> 750 string(3) "bar" 751} 752 753--> scheme:: array(1) { 754 ["scheme"]=> 755 string(6) "scheme" 756} 757 758--> foo+bar://baz@bang/bla: array(4) { 759 ["scheme"]=> 760 string(7) "foo+bar" 761 ["host"]=> 762 string(4) "bang" 763 ["user"]=> 764 string(3) "baz" 765 ["path"]=> 766 string(4) "/bla" 767} 768 769--> gg:9130731: array(2) { 770 ["scheme"]=> 771 string(2) "gg" 772 ["path"]=> 773 string(7) "9130731" 774} 775 776--> http://user:@pass@host/path?argument?value#etc: array(7) { 777 ["scheme"]=> 778 string(4) "http" 779 ["host"]=> 780 string(4) "host" 781 ["user"]=> 782 string(4) "user" 783 ["pass"]=> 784 string(5) "@pass" 785 ["path"]=> 786 string(5) "/path" 787 ["query"]=> 788 string(14) "argument?value" 789 ["fragment"]=> 790 string(3) "etc" 791} 792string(4) "http" 793string(11) "www.php.net" 794int(80) 795string(6) "secret" 796string(7) "hideout" 797string(10) "/index.php" 798string(31) "test=1&test2=char&test3=mixesCI" 799string(16) "some_page_ref123" 800