验证PHP变量

时间:2015-03-12 20:20:40

标签: php regex preg-match

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

1 个答案:

答案 0 :(得分:2)

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

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