The only reason to check beyond a loose true and false is to determine if the pattern failed (or as of 5.3.6, that the offset is > the length provided). There's no reason why you cannot make use of an elseif should you need to know if the pattern is bad:
if (($result = preg_match('...', $var, $matches)) === false)
// bad pattern
else if ($result)
// no matches.
Although realistically you should catch a bad failure during development as it will trigger a warning.