Monday, February 20, 2012

What"s wrong with this PHP Regex code?


The x modifier code in this tutorial Php regex tutorial gives me the following error:



Warning: preg_match() [function.preg-match]: Unknown modifier ' ' in C:\xampp\htdocs\validation\test.php on line 16
Pattern not found


What's wrong with it?




<?php
// create a string
$string = 'sex'."\n".'at'."\n".'noon'."\n".'taxes'."\n";

// create our regex using comments and store the regex
// in a variable to be used with preg_match
$regex ="
/ # opening double quote
^ # caret means beginning of the string
noon # the pattern to match
/imx
";

// look for a match
if(preg_match($regex, $string))
{
echo 'Pattern Found';
}
else
{
echo 'Pattern not found';
}
?>

2 comments:

  1. You have an extra newline in the modifiers because the terminating quote is on a new line after imx, that is why you are seeing unknown modifier ' '

    Try changing it to this:

    $regex ="
    / # opening double quote
    ^ # caret means beginning of the string
    noon # the pattern to match
    /imx"; // move "; to same line as /imx

    ReplyDelete
  2. PHP gives you the reason for the error in the warning message: Unknown modifier ' '.

    Obviously you are not allowed to have white space in the modifier list after the ending delimiter / in your pattern. You can remove this white space with the trim() function:

    if (preg_match(trim($regex), $string))
    // ...

    ReplyDelete