好吧,不是正则表达式,因为我看不出这有什么帮助,但这里有一个可以大大简化编码的函数:
<?php
function postvar($index){
return isset($_POST[$index]) ? $_POST[$index] : '';
}
$bsdatA = postvar('bsdat_a');
顺便说一句,我会postvar('bsdat_a')
直接使用,而不是将结果放入变量中,因为您可能会遇到很多变量,而您只会使用一次。如果您绝对确定要将$bsdatA
and$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'];