Yahel
Yahel

Reputation: 37305

How do I apply URL normalization rules in PHP?

Is there a pre-existing function or class for URL normalization in PHP?

Specifically, following the semantic preserving normalization rules laid out in this wikipedia article on URL normalization, (or whatever 'standard' I should be following).

Right now, I'm thinking that I'll just use parse_url(), and apply the rules individually, but I'd prefer to avoid reinventing the wheel.

Upvotes: 9

Views: 4062

Answers (1)

Bharat Mediratta
Bharat Mediratta

Reputation: 476

The Pear Net_URL2 library looks like it'll do at least part of what you want. It'll remove dot segments, fix capitalization and get rid of the default port:

include("Net/URL2.php");
$url = new Net_URL2('HTTP://example.com:80/a/../b/c');
print $url->getNormalizedURL();

emits:

http://example.com/b/c

I doubt there's a general purpose mechanism for adding trailing slashes to directories because you need a way to map urls to directories which is challenging to do in a generic way. But it's close.

References:

Upvotes: 6

Related Questions