fnmatch()使用纯通配符返回false

时间:2013-08-19 17:38:32

标签: php

我有以下代码:

echo "matching: ".$params['perm']." against: "; var_dump($perm);
if (fnmatch($params['perm'], $perm)) { $x=true; }
$this->code = 200;
return $x;

我问他$perm是否包含$params['perm']的开头或是*

在这种情况下,我的输出是:

matching: acl.adduser against: array(1) {
  [0]=>
  string(1) "*"
}
{"code":200,"data":false}

不应该返回true,因为*是我的权限,这允许我也拥有acl.adduser

1 个答案:

答案 0 :(得分:2)

$perm应该是一个字符串,而在你的例子中它是一个数组。在这种情况下,fnmatch无法正常工作,您也应该看到有关此问题的PHP警告。

此外,参数的顺序似乎是相反的。此测试按预期工作:

var_dump(fnmatch('*', 'acl.adduser'));