Bug #78997 [Nab]: PHP parse_url incorrect
| From: | geekcom@php.net | Date: | Thu, 19 Dec 2019 14:39:49 +0000 |
| Subject: | Bug #78997 [Nab]: PHP parse_url incorrect | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-224420@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=78997&edit=1
ID: 78997
Updated by: geekcom@php.net
Reported by: dinhbaouit at gmail dot com
Summary: PHP parse_url incorrect
Status: Not a bug
Type: Bug
Package: *URL Functions
Operating System: ubuntu
PHP Version: 7.2.26
Assigned To: geekcom
Block user comment: N
Private report: N
New Comment:
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
This is not a bug according to the manual.
"This function is not meant to validate the given URL, it only breaks it up into the above
listed parts. Partial URLs are also accepted, parse_url() tries its best to parse them
correctly."
Previous Comments:
------------------------------------------------------------------------
[2019-12-19 14:37:18] geekcom@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
------------------------------------------------------------------------
[2019-12-19 14:18:07] geekcom@php.net
Hi folk, i did the same test with FQDN and...
Test script:
---------------
<?php
var_dump(parse_url('http://localhost:80?a=1'));
?>
Result:
----------------
array(4) {
["scheme"]=>
string(4) "http"
["host"]=>
string(9) "localhost"
["port"]=>
int(80)
["query"]=>
string(3) "a=1"
}
This result is expected .
------------------------------------------------------------------------
[2019-12-19 11:22:44] drtechno at mail dot com
The url must be formatted correctly for parse_url to work because it relies on the / symbol as a
term separator.
$url = 'http://username:password@hostname:9090/path?arg=value#anchor';
$data=parse_url($url);
Print_r($data);
would return:
Array ( [scheme] => http [host] => hostname [port] => 9090 [user] => username [pass]
=> password [path] => /path [query] => arg=value [fragment] => anchor )
$url = 'http://username:password@hostname:9090/path?arg=value#anchor';
var_dump(parse_url($url));
will output the string.length.count with the array:
array(8) { ["scheme"]=> string(4) "http" ["host"]=> string(8)
"hostname" ["port"]=> int(9090) ["user"]=> string(8)
"username" ["pass"]=> string(8) "password" ["path"]=>
string(5) "/path" ["query"]=> string(9) "arg=value"
["fragment"]=> string(6) "anchor" }
The "host" tag returns a FQDN only, local alias such as localhost will be listed in
"scheme"
------------------------------------------------------------------------
[2019-12-19 11:17:02] cmb@php.net
I can confirm this behavior[1], but like the documentation[2]
states:
| Partial URLs are also accepted, parse_url() tries its best to
| parse them correctly.
So, in my opinion, this is not a bug (and might be duplicate
anyway).
[1] <https://3v4l.org/h4EMu>
[2] <https://www.php.net/parse_url>
------------------------------------------------------------------------
[2019-12-19 09:51:15] dinhbaouit at gmail dot com
Description:
------------
In PHP <7.2.26 when using parse_url "host:port?query" the result return incorrect
Test script:
---------------
<?php
var_dump(parse_url("localhost:80?a=1"));
?>
Expected result:
----------------
php > var_dump(parse_url("localhost:80?a=1"));
array(3) {
["host"]=>
string(9) "localhost"
["port"]=>
string(2) "80"
["query"]=>
string(3) "a=1"
}
Actual result:
--------------
php > var_dump(parse_url("localhost:80?a=1"));
array(3) {
["scheme"]=>
string(9) "localhost"
["path"]=>
string(2) "80"
["query"]=>
string(3) "a=1"
}
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=78997&edit=1