So, what you want is a function foo() and its inverse foo'() that does this:
foo( "some long string" ) --> 1234 foo'( 1234 ) --> "some long string"
In other words, you want to keep the entire information content of the original string.
There are only two ways to do this:
- keep the original string, i.e. store it in a database of some sort, or
- lossless compression of the original string into a short number. While theoretically possible, the compression ratio you're asking for isn't going to be possible.
Which leaves the first option, as plenty of people here have described.
So: You've said you already have a database with a column that stores a 4-digit number. If that database table doesn't already have a column that stores the HTML page's absolute path, then add one. You'll also want a UNIQUE constraint on the column with the number (and/or the other column, depending on your database design). The rest is "just" SQL...