By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,213 Members | 2,172 Online
Bytes IT Community
+ Ask a Question
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 . "<br>";
echo preg_match('[A-Za-z0-9]', $lic) . "<br>";

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
Share this Question
Share on Google+
2 Replies


P: n/a
JanDoggen schreef:
function vldLicense($lic)
{
echo "called with lic: ". $lic . "<br>";
echo preg_match('[A-Za-z0-9]', $lic) . "<br>";

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
<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
Jun 2 '08 #3

This discussion thread is closed

Replies have been disabled for this discussion.