tags:

views:

95

answers:

2

I need to replace url invalid characters with something url valid then convert it back again.

This is for a search page with a url like http://my.site/search/this-is-a-search, the search form POSTS then the user redirected to the new url.

Php has functions urlencode and urldecode however these do not work at all, and leave invalid characters in my url.

Surely I don't need to reinvent the wheel here.

A: 

What about rawurlencode().

http://www.php.net/manual/en/function.rawurlencode.php

echo rawurlencode('http://my.site/search/this-is-a-search');
// http%3A%2F%2Fmy.site%2Fsearch%2Fthis-is-a-search
alex
+2  A: 
Artefacto
rawurlencode still leaves ' and , in the url. I have a feeling the problem is the encoding of the POST string however.
Keyo
@Keyo ' and , are also allowed: `extra = "!" | "*" | "'" | "(" | ")" | ","`
Artefacto
I tracked it down to codeigniter (php framework) not allowing these characters.
Keyo
@Keyo Well, you can convert them yourself to the %XX escape sequence if you wish.
Artefacto