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

以下を使用して変数をインポートする必要があります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 に答える