440,213 Members | 2,172 Online
Need help? Post your question and get tips & solutions from a community of 440,213 IT Pros & Developers. It's quick & easy.

# Another preg_match() [function.preg-match]: Unknown modifier '{';-)

 P: n/a function vldLicense(\$lic) { echo "called with lic: ". \$lic . "
"; echo preg_match('[A-Za-z0-9]', \$lic) . "
"; if (preg_match('[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za- z0-9]{4}', \$lic) == 0) return false; return true; } gives me: called with lic: 64gd-kwey-t643-ytes 0 Warning: preg_match() [function.preg-match]: Unknown modifier '{' Why the 0 in the simple match? Why the unknown modifier in the complex match? Thanks in advance Jan Jun 2 '08 #1
2 Replies

 P: n/a JanDoggen schreef: function vldLicense(\$lic) { echo "called with lic: ". \$lic . "
"; echo preg_match('[A-Za-z0-9]', \$lic) . "
"; if (preg_match('[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za- z0-9]{4}', \$lic) == 0) return false; return true; } gives me: called with lic: 64gd-kwey-t643-ytes 0 Warning: preg_match() [function.preg-match]: Unknown modifier '{' Why the 0 in the simple match? Why the unknown modifier in the complex match? In the first call, the square brackets are assumed to be modifiers. If you would put something behind the character class (e.g. '[A-Za-z0-9]a'), you will the same compliant pointing at the bracket. JW Jun 2 '08 #2

 P: n/a On Fri, 18 Apr 2008 06:25:45 -0700 (PDT), JanDoggen : >function vldLicense(\$lic){echo "called with lic: ". \$lic . "
"; You can write this as: echo "called with lic: \$lic
"; php will replace \$lic with the value of the variable. See the difference between (") and ('). >echo preg_match('[A-Za-z0-9]', \$lic) . "
"; echo preg_match('/[A-Za-z0-9]/', \$lic) . "
"; Regexes are required to be bounded by a character. "/" is the usual character used, but you can use others as well. if (preg_match('[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}', \$lic) == 0) return false; if (preg_match('/[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za- z0-9]{4}/', \$lic) == 0) return false; Again, put the regex inside of "/". return true;}gives me:called with lic: 64gd-kwey-t643-ytes0Warning: preg_match() [function.preg-match]: Unknown modifier '{'Why the 0 in the simple match? Because preg_match was treating "[]" as the regex bounding characters instead of the class boundary, so it read "[A-Za-z0-9]" as matching the literal string "A-Za-z0-9". >Why the unknown modifier in the complex match? Same reason. It read the first occurrence of "[A-Za-z0-9]" as the regex (match literal string "A-Za-z0-9") and then couldn't figure out what to do with {4}. -- Charles Calvert | Software Design/Development Celtic Wolf, Inc. | Project Management http://www.celticwolf.com/ | Technical Writing (703) 580-0210 | Research Jun 2 '08 #3

### This discussion thread is closed

Replies have been disabled for this discussion.