php_guy Posted September 24, 2010 Share Posted September 24, 2010 Here's my code: I'm trying to make a function that returns true if the supplied string contains illegal characters, or false otherwise. I can't get it to work. Could someone please comment? <?phpfunction contains_illegal_chars($value) {if ( preg_match("['=]", $value) > 0 ) { return true; } return false;}$value = "this contain both illegal characters: ' and =" . "<BR>";echo "Value is: $value";if( contains_illegal_chars($value) )echo "yes";elseecho "no"; // This is always being returned! Even though the string clearly contains both the quote and the equals sign!?> Quote Link to comment https://forums.phpfreaks.com/topic/214253-why-does-this-preg_match-code-fail/ Share on other sites More sharing options...
BlueSkyIS Posted September 24, 2010 Share Posted September 24, 2010 Don't forget the slashes in the pattern: if ( preg_match("/['=]/", $value) > 0 ) Quote Link to comment https://forums.phpfreaks.com/topic/214253-why-does-this-preg_match-code-fail/#findComment-1114853 Share on other sites More sharing options...
php_guy Posted September 24, 2010 Author Share Posted September 24, 2010 Great! Thank you that worked. Why do the brackets need to be escaped? Aren't they automatically treated as a regex special character? I would think you would only need to escape them if you actually wanted to search for the bracket itself. So preg_match( "[/[]", $value) No? Quote Link to comment https://forums.phpfreaks.com/topic/214253-why-does-this-preg_match-code-fail/#findComment-1115255 Share on other sites More sharing options...
jcbones Posted September 24, 2010 Share Posted September 24, 2010 The slashes as advised are de-limiters, any non-alphanumeric character can be a de-limiter. Such as ~,!,@,%,etc. Just remember, a de-limiter that is used inside the expression, must be escaped. Quote Link to comment https://forums.phpfreaks.com/topic/214253-why-does-this-preg_match-code-fail/#findComment-1115261 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.