Bug #72811 [Com]: parse_url fails with IPv6 host
Edit report at https://bugs.php.net/bug.php?id=72811&edit=1
ID: 72811
Comment by: me at kelunik dot com
Reported by: me at kelunik dot com
Summary: parse_url fails with IPv6 host
Status: Open
Type: Bug
Package: URL related
Operating System: *
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
Well, there's an explicit comment about parsing "a.com:80" correctly. Same should be
for true for IPs. See https://php-lxr.adamharvey.name/source/xref/master/ext/standard/url.c#133
Previous Comments:
------------------------------------------------------------------------
[2016-08-13 19:34:56] vhu at iki dot fi
Key point here is the parsing without scheme; everything works already exactly as expected if scheme
is specified. This got me thinking. How should this be parsed if there is no port number and should
there a difference between IPv4 and IPv6?
Especially consider how does this compares to how browsers parse the URLs? e.g. <a
href="[2001::1]/asdf"> vs <a href="http://[2001::1]/asdf">
I'm almost tempted to say that the way IPv4 URL is parsed is incorrect ;)
------------------------------------------------------------------------
[2016-08-11 11:47:37] me at kelunik dot com
Description:
------------
PHP fails to parse the host part if an IPv6 address is used in combination with a port.
Test script:
---------------
<?php
// See https://3v4l.org/7uVWs
var_dump(parse_url("127.0.0.1:80", PHP_URL_HOST));
var_dump(parse_url("[::1]:80", PHP_URL_HOST));
Expected result:
----------------
string(9) "127.0.0.1"
string(5) "[::1]"
Actual result:
--------------
string(9) "127.0.0.1"
NULL
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=72811&edit=1
Thread (3 messages)