After you find and familiarize yourself with an editor that shows matching parens, you might want to read the documentation on crypt() as well. You are picking your salt from 100 different values. (Those that are composed of digits.) A salt's character can be chosen from the set [./0-9a-zA-Z] which gives a possible 4096 different combinations. Limiting yourself to less than 3% of those is probably not a good idea.