php - preg_match_all matches array -
i have this
$matches = array(); preg_match_all('/(`.+`)(\s+as\s+`.+`)?/i', '`foo` `bar`', $matches); print_r($matches);
the result is
array ( [0] => array ( [0] => `foo` `bar` ) [1] => array ( [0] => `foo` `bar` ) [2] => array ( [0] => ) )
so, question why don't have ' `bar`' in $matches[2][0]
? (if remove '?' symbol regex, i'll it, need '?' :))
quantifiers +
greedy default if first 1 can match so. making non-greedy should job:
preg_match_all('/(`.+?`)(\s+as\s+`.+`)?/i', '`foo` `bar`', $matches);
and way, $matches = array();
not necessary - variable written preg_match_all
not need initialized/defined before.
php > preg_match_all('/(`.+?`)(\s+as\s+`.+`)?/i', '`foo` `bar`', $matches); php > print_r($matches); array ( [0] => array ( [0] => `foo` `bar` ) [1] => array ( [0] => `foo` ) [2] => array ( [0] => `bar` ) )
Comments
Post a Comment