billygoatkaraoke Posted May 28, 2012 Share Posted May 28, 2012 Gidday I have the following regexp set up to return true if the string doesn't pass: if(filter_var(myWords, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[' &\p{L}\p{Nd}]*$/"))) === false) return true; What I want to pass is any letter or number in any language, plus single quotes, ampersands and spaces. The above seems to work, but not for non-english letters eg with accents. Is there anything obvious I'm missing? Thanks for your time and help. Quote Link to comment Share on other sites More sharing options...
Psycho Posted May 30, 2012 Share Posted May 30, 2012 Depending on the system you run on, the \w parameter may work. Not sure why you want to use such an overcomplicated line of code. This seems to work for me based on your requirements function validString($string) { return !preg_match("#[^\w\d'& ]#", $string); } Quote Link to comment Share on other sites More sharing options...
requinix Posted May 30, 2012 Share Posted May 30, 2012 \p is only available in UTF-8 mode, which you specify with the /u flag. And +1 to what Psycho said. That filter_var line is way overcomplicated. Quote Link to comment Share on other sites More sharing options...
billygoatkaraoke Posted May 30, 2012 Author Share Posted May 30, 2012 Thanks guys. Yeah - the w didn't work, so I ended up using "/^[\\s\\p{L}\\p{N} '&]+$/u", which allows letters and numbers in any language, plus spaces, apostrophes and ampersands. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.