I tested two popular solutions against my test case and in the end decided to create a simpllified 'port' of ruby's URI class. Let's take a look at the competition:
- rel2abs - The nicest thing I can say about this solution is that it's the fastest. Unfortunately it failed 30% of my tests.
Usage:rel2abs($rel, $base)
- UrlToAbsolute - This one did fairly well, passing 90% of my tests. Keep in mind that many of the tests are rare edge cases, so I imagine real world success would be close to 100%. I could almost be happy with this one. Unfortunately the global namespace clutter it creates is a potential disaster, I decided it's best to steer clear of this one as well.
Usage:url_to_absolute($base, $rel)
- Phpuri - While it passed 100% of the tests, I will concede that the deck was stacked. In other words I had the tests in mind while writing it and the goal was specifically to pass those tests.
Usage:phpUri::parse($base)->join($rel)
The Verdict:
Obviously I'm biased but I'm scoring this one for Phpuri.Leave a comment if you disagree, I want to hear about it.
The Code:
require 'phpuri.php'; echo phpUri::parse('https://www.google.com/')->join('foo'); //==> https://www.google.com/foo
Thanks a lot man, you really saved me with this:)
ReplyDelete