posted by Sakila The Librarian
on
Mon 07 Sep 2009 12:11 UTC
Tags:
So you want to store URLs in MySQL, and the URLs have those annoying "%20%27%7C%26%5E%2B%2D%25" symbols? And you want to be able to show your users some kind of human-readable information. You might want to consider using this trick. Take this list of commonly escaped characters as an example:%20 - space%27 - '%7C - |%26 - &%5E - ^%2B - +%2D - -%25 - %So, how about we do some search'n'replace on that?mysql> SET @url:='%20%27%7C%26%5E%2B%2D%25';Query OK, 0 rows affected (0.00 sec)mysql> SELECT @url as original, -> REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( -> REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( -> @test,'%20',' '), -> '%27','\\''), -> '%7C','|'), -- REPLACE() is case sensitive -> '%7c','|'), -- so we have -> '%26','&'), -> '%5E','^'), -> '%5e','^'), -- to repeat -> '%2D','-'), -> '%2d','-'), -- ourselves -> '%2B','+'), -> '%2b','+'), -- sometimes -> '%25','%') as replaced;+--------------------------+----------+| original | replaced |+--------------------------+----------+| %20%27%7C%26%5E%2B%2D%25 | '|&^+-% | +--------------------------+----------+1 row in set (0.01 sec)mysql> We can easily turn this into a function: