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!?> 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 ) 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? 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. 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
Archived
This topic is now archived and is closed to further replies.