Quoting Cog Rusty <cog.rusty@gmail.com>:
if (ereg("[^\x80-\xF7 [:alnum:]@_.-]", $name)) return t('The username contains an illegal character.');
seems to be disallowing @, underscore, period and hyphen...or is it allowing them? Regular expressions were never my forte!
I don't think it is coded correctly. The range is 128-247 decimal which in my day indicated control characters. So if $name contains these or a space or alphanumeric or an @ or an _ or ANY CHARACTER (. is a regular expression meta character meaning any character) or a - then it will return the text message that username is invalid. You need to character escape the period to make it useful. Maybe change it to ereg("[\^\x80-\xF7 @_\.\-]", $name) would be useful.
Neither mine. I think that one says that names can't begin (^) with these characters. In the absence of better advice, I would change
In researching I could only find ^ outside of the [] and I'm guessing the range is limited to the first character of $name since it is inside the [].
something that I understand, for example I would copy and adapt the if (strpos($name, ' ') !== FALSE) line which checks for double spaces.
But you take away the fun of parsing the expression manually to understand it. ;D. Joking aside, regular expressions are very useful for this type of parsing. I was looking for a good tutorial on extended regular expression patterns but didn't come up with one. Earnie -- http://for-my-kids.com/