siaooo
siaooo

Reputation: 1825

Can PHP regex patterns contain trailing whitespace after the ending delimiter?

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?

$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
";

if (preg_match($regex, $string)) {
    echo 'Pattern Found';
} else {
    echo 'Pattern not found';
}

Upvotes: 0

Views: 168

Answers (2)

drew010
drew010

Reputation: 69957

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

Upvotes: 2

Ferdinand Beyer
Ferdinand Beyer

Reputation: 67157

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))
// ...

Upvotes: 1

Related Questions