php - How preg_match works exactly? -


I have written a simple task to check whether the sender string should be "valid" or not.

  // This works without issues validate_email ($ value) {return preg_match ("/ ^ [^ 0-9] [A-z0-9 _] + ([[[[[ [A-z0-9_] +) * [@] [A-0-9 _] + ([.] [A-0-9 _] +) * [.] [Ed] {2,4} $ / ", $ Value); } // This function does not work validate_string ($ value) {return preg_match ("([^ [<  

If I send an email to validate_email the first function works well, it is used to validate me, I can get back 1 or 0 if not.


Do validate_string with all strings, but without ? = & Lt; > / \ . If I check the function, then I return 1 in any way, why?

  Valid_string ("Tonino"); // Return 1 ok validate_string ("ton \ ino \"); // Why return 1? Validate_string ("tons? Ed = 3"); // Why return 1?  

^ Around ([^ should not mean characters after it ( Or

There are many errors in your code except that "ton \ ino \ " is not a valid string and [^ ^ lt; & Gt ;? = / \] + is not a valid regular expression, possibly some rational misconceptions.

Your regular expression [^ (if corrected here) will be a match if there is at least one character that is not & lt; , & gt; , ? , = , / and \ . So if there are at least one such letter, then preg_match returns 1 . ton \ ino " and tons? Asd = 3 both have at least one letter (match is ton ) in both cases.

A fix for this is either to claim the beginning and end of the string ( ^ and $ ), so that only for the whole Allow Legal Characters String:

  ^ [^ << 

Or a positive character square To use [ to match the illegal characters and preg_match :

  function validate_string ($ value) {Return! Preg_match ("([[lt; & gt;? = / \\\\] +) ", $ Value);}  

But it would definitely be better to use the whitelist instead of the blacklist.


Comments

Popular posts from this blog

oracle - The fastest way to check if some records in a database table? -

php - multilevel menu with multilevel array -

jQuery UI: Datepicker month format -