我正在尝试验证字符串数组以查看它们是否是有效的变量名,如果不是则抛出错误。但是使用我的测试数组(如下所示),所有键都会以有效名称的形式返回,我知道它们不应该是因为第一个键以3
开头并且不是有效的。我做错了吗?
foreach($key as $k => $v){
if(!preg_match("'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'", $k)){
throw new Exception("Invalid Meta Data Key Name");
}
$this->meta->$k = $v;
}
在此处找到正则表达式:http://php.net/manual/en/language.variables.basics.php
这是我用来测试上面的数组:
$key = array(
"3total" => $this->foundRows,
"rows" => $this->resultSetSize,
"page" => $this->page,
"pages" => $this->getPages(),
"offset" => $this->getOffset(),
"columns" => $this->columns,
)
答案 0 :(得分:2)
该模式在任何地方都匹配。您需要使用行锚^
的开头。正确验证可能需要结束锚$
:
'^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$'