2

渡された文字列に対していくつかの操作を実行する関数が呼び出されmyFooました (この場合、簡単にするために、それを出力するだけです)。

この関数を次のように動作させたい:

  • のように変数で呼び出された場合myFoo($myBar);、出力する前に変数をサニタイズしたいと思います。

  • のように文字列で呼び出された場合myFoo("My name is Bar");、文字列のサニタイズ ビットをスキップする必要があります。

関数myFooを以下に示します。

public function myFoo($bar) {
    // Determine if $bar was a string, or a variable
    if([$bar was passed as a variable]) {
        // Sanitize it
        $bar = filter_var($bar,FILTER_SANITIZE_STRING);
    }
    // Otherwise, just print it out without sanitization

    // Print it
    echo $bar;
}

パラメータが直接文字列文字列変数ifかを判断するには、ステートメントに何を記述すればよいですか? これは可能ですか?ありがとう!

更新 - 詳細説明

私はおそらく私の意図を以前に明確にするべきだった..ここに行く:だから私は実際に私のPHPウェブサイトのすべてのテキストを(すべてのページにわたって)翻訳するためにこれを使うつもりだった. したがって、次のように書く代わりに:

<html>
<head><title>Welcome to the ACME Co. Homepage</title></head>
<body><h1>Welcome to the ACME Co. Homepage</h1>
...

..代わりにこれを書きます:

<html>
<head><title><?= _("Welcome to the ACME Co. Homepage"); ?></title></head>
<body><h1><?= _("Welcome to the ACME Co. Homepage"); ?></h1>
...

メソッドは_言語設定を決定し、正しい言語で文字列を出力します。ユーザー入力を単にサニタイズするのではなく、ページ上のすべてのものをサニタイズするオーバーヘッドをスキップしたかっただけだと思います(特に、この関数は非常に頻繁に呼び出されるため)

4

1 に答える 1