A: 

Your requirements are a little vague, but you can enforce only letters (possibly combined with marks) and decimal numbers with

if (!preg_match('/^[\p{L}\p{M}\p{Nd}]{2,}$/u', $_POST['company_name'])) {
   //error here
}
Artefacto
Im a regex nube so pls be patient! I can not get this to work I have tried with the three vars below but always throws error - pls help! Thanks$var = "若您是参展商"; // same result//$var = "test"; // same result//$var = "test{}/'*/-"; if (!preg_match('/^[\p{L}\p{M}\p{Nd}]{2,}$/u', $var)) { echo "Not just Unicode languaage chars - error"; }
@user It works. See here: http://codepad.viper-7.com/kGxOG2 Make sure your data is actually encoded in UTF-8 (for instance, the characters are not encoded with HTML entities).
Artefacto
Thanks for the patience - I do believe you that your code works but - I am running the exact same code on our server - using true utf8 chars and both are failing? ' $var fails $var2 fails ' - we have same php version as the codepad could there be any other server vars / settings that would make your regex fail? Once again thanks for your help.
@user Check if the output of [this](http://codepad.viper-7.com/VroOuL) is the same.
Artefacto
Have just run the exact same code on our server and still both vars fail. Without wanting to pester you too much any more suggestions? Thanks again
@user Is the output of the first var_dump the same (the long string)?
Artefacto
A: 

The mbstring extension of PHP has an mb_ereg() function, this would probably be a good starting point, I guess.

coudenysj
A: 

You can try to match with \p{L}|\p{N} but you need to add the u option to your regex.

Sources :
www.regular-expressions.info

Colin Hebert