Skip to content

\Uri\Rfc3986\Uri does not handle some non-encoded characters (@, [) #21427

@earthiverse

Description

@earthiverse

Description

The following code:

var_dump(new \Uri\Rfc3986\Uri("http://media-store.localhost/img/store/31/bc/0ef8ebbc4035984ef59aa595cf4f7ee8d068/%C3%89t%C3%89@%C3%89b%C3%89g%C3%89o%C3%85[%C3%89K%C3%85[%C3%87Q.jpg"));

Resulted in this output:

PHP Warning:  Uncaught Uri\InvalidUriException: The specified URI is malformed

But I expected this output instead:

class Uri\Rfc3986\Uri#2 (8) {
  public $scheme =>
  string(4) "http"
  public $username =>
  NULL
  public $password =>
  NULL
  public $host =>
  string(21) "media-store.localhost"
  public $port =>
  NULL
  public $path =>
  string(118) "/img/store/31/bc/0ef8ebbc4035984ef59aa595cf4f7ee8d068/%C3%89t%C3%89@%C3%89b%C3%89g%C3%89o%C3%85[%C3%89K%C3%85[%C3%87Q.jpg"
  public $query =>
  NULL
  public $fragment =>
  NULL
}

I'm not too sure about RFC 3986, but I copied that URL straight from my browser's URL, and it didn't encode the @ or [ characters when I copied it. If I percent-encode those, it parses OK.

https://en.wikipedia.org/wiki/Percent-encoding#Reserved_characters says "reserved characters that have no reserved purpose in a particular context may also be percent-encoded but are not semantically different from those that are not."

PHP Version

PHP 8.5.3 (cli) (built: Feb 10 2026 18:25:51) (NTS)
Copyright (c) The PHP Group
Built by Shivam Mathur
Zend Engine v4.5.3, Copyright (c) Zend Technologies
    with Xdebug v3.5.1, Copyright (c) 2002-2026, by Derick Rethans
    with Zend OPcache v8.5.3, Copyright (c), by Zend Technologies

Operating System

MacOS Tahoe 26.3.1

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions