まあ、それがどのように役立つかわからないので、正規表現ではありませんが、コーディングを大幅に簡素化できる関数を次に示します。
<?php
function postvar($index){
return isset($_POST[$index]) ? $_POST[$index] : '';
}
$bsdatA = postvar('bsdat_a');
ちなみに、結果を変数に入れるのではなく、直接使用postvar('bsdat_a')
します。これは、一度だけ使用する変数がたくさんあるリスクがあるためです。ローカル変数として使用したいことが絶対に確実な場合は、ループを使用することをお勧めし$bsdatA
ます。$bsdatB
<?php
foreach( range('A', 'Z') as $current ) {
${'bsdat'.$current} = postvar('bsdat_'.strtolower($current));
}
しかし、それはただ怖いです:)
編集:ああ、あなたは既存のスクリプトについて話していて、それを変更して多くのisset()呼び出しを含めたいですか?申し訳ありませんが、私はそれを拾いませんでした。
$ _POSTを、ArrayAccessを実装するオブジェクトに置き換えることができます。このようにして、呼び出されたが使用されていないPOST変数をログに記録することもできます。
<?php
class PostVars implements ArrayAccess {
protected $vars;
public $log;
public function __construct($vars) {
$this->vars = $vars;
}
public function offsetGet($offset) {
if(!isset($this->vars[$offset])) {
$this->log[] = $offset;
}
return $this->vars[$offset];
}
public function offsetExists($offset) {
return isset($this->vars[$offset]);
}
public function offsetSet($offset, $value) {
// readonly.
}
public function offsetUnset($offset) {
// readonly.
}
}
$_POST = array('bsdat_a' => 'bar', 'bsdat_b' => null);
$_POST = new PostVars($_POST);
echo $_POST['bsdat_a'];
echo $_POST['bsdat_b'];