非常自我解释:发生了什么?为什么这个字符串(2个已转换)返回匹配但是为空?而不是一个空的数组?
php > preg_match("/[a-z\s\']*/", (string)2, $matches);
php > var_dump($matches);
array(1) {
[0]=>
string(0) ""
}
php >
答案 0 :(得分:2)
因为您正在使用*
,这表示正则表达式应匹配0或更多次出现的字符类。它匹配字符串中的零次出现,并将它们读入匹配数组。
答案 1 :(得分:1)
*
匹配前面标记的零个或多个。正如你所寻求的那样,零长度字符串匹配。如果您不想匹配,请将*
替换为+
,以至少要求其中一个令牌。