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. Link to comment https://forums.phpfreaks.com/topic/263265-regexp-prob/ 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); } Link to comment https://forums.phpfreaks.com/topic/263265-regexp-prob/#findComment-1349709 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. Link to comment https://forums.phpfreaks.com/topic/263265-regexp-prob/#findComment-1349715 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. Link to comment https://forums.phpfreaks.com/topic/263265-regexp-prob/#findComment-1349721 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.