On Fri, 18 Apr 2008 06:25:45 -0700 (PDT), JanDoggen
<Ja*******@planet.nlwrote in
<3f**********************************@k37g2000hsf. googlegroups.com>:
>function vldLicense($lic)
{
echo "called with lic: ". $lic . "<br>";
You can write this as:
echo "called with lic: $lic<br>";
php will replace $lic with the value of the variable. See the
difference between (") and (').
>echo preg_match('[A-Za-z0-9]', $lic) . "<br>";
echo preg_match('/[A-Za-z0-9]/', $lic) . "<br>";
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-ytes
0
Warning: 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