I am working on hashing a string and getting a hasnumber and then unhasing a number to get a string back. Below is my java version of it:
public class Hashcode {
private static final String ALPHABET = "acegikmnoprstuvy";
public static long hash(String s) {
long h = 7;
for (int i = 0; i < s.length(); i++) {
h = (h * 37 + ALPHABET.indexOf(s.charAt(i)));
}
return h;
}
public static String unhash(long n) {
String result = "";
while (n > 7) {
result = ALPHABET.charAt((int) (n % 37)) + result;
n = n / 37;
}
if (n != 7) {
System.err.println("Error, hash parity incorrect.");
System.exit(1);
}
return result;
}
public static void main(String[] args) {
System.out.println(hash("reports"));
System.out.println(unhash(690336378753L));
System.out.println(unhash(932246728227799L));
System.out.println(hash("mymitsapp"));
}
}
Now I am trying to do same exercise in php as shown below but it is giving me an error:
function unhash($h) {
$letters = "acegikmnoprstuvy";
$s='';
while ($h>7){
//hold
$pos = fmod($h, 37);
$s = $letters[$pos].$s;
$h = ($h-$pos) / 37 ;
}
return $s;
}
Below is an error and here is the ideone link.
PHP Parse error: syntax error, unexpected end of file, expecting ',' or ';' in /home/mNw4IK/prog.php on line 16
Any thoughts what is wrong or any other better way to write this?