验证 PHP 变量

Validate a PHP variable

我正在尝试验证一个字符串数组以查看它们是否是有效的变量名,如果不是则抛出错误。但是使用我的测试数组(如下所示),所有键都作为有效名称返回,而且我知道它们不应该,因为第一个以无效的 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,
)

该模式在任何地方都匹配。您需要使用行锚 ^ 的开头。正确验证可能需要结束锚 $

'^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$'