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