1

如何在函数运行时将变量放置在函数中以便 preg_match 正确的信息。这是我现有的代码:

$username = "test";
function is_txt($file) {
return preg_match('/backup-[0-9]+\.[0-9]+\.[0-9]+_[0-9]{2}-[0-9]{2}-[0-9]{2}_'.$username.'.tar.gz/', $file) > 0;
}

我正在尝试做的是从函数外部提取 $username 变量并允许在其中看到它,这样我就可以在我的 while 循环中提取正确的匹配项。虽然前一个返回空白,但如果我执行以下操作,它会起作用:

$username = "test";
function is_txt($file) {
$username = "test";
return preg_match('/backup-[0-9]+\.[0-9]+\.[0-9]+_[0-9]{2}-[0-9]{2}-[0-9]{2}_'.$username.'.tar.gz/', $file) > 0;
}
4

2 回答 2

2

修改函数以将$username变量作为参数:

function is_txt($file, $u) {
return preg_match('/backup-[0-9]+\.[0-9]+\.[0-9]+_[0-9]{2}-[0-9]{2}-[0-9]{2}_'.$u.'.tar.gz/', $file) > 0;
}

然后这样称呼它:

$username = "test";
is_txt($file, $username);

或者,您可以使用global关键字使变量在函数中可见。这有时很有用,但不应该到处使用。有关更多信息,请参阅变量范围手册条目。

于 2013-01-02T01:25:58.307 回答
1

您需要使用以下命令导入 var global

function is_txt($file) {
    global $username;
    return preg_match('/backup-[0-9]+\.[0-9]+\.[0-9]+_[0-9]{2}-[0-9]{2}-[0-9]  {2}_'.$username.'.tar.gz/', $file) > 0;
}

但是在大多数情况下,将值作为参数传递给 Jonah 是一个更好的解决方案。

于 2013-01-02T01:26:08.970 回答