哦,不是一個正則表達式,因爲我看不出這會有所幫助,但這裏是一個可以通過很多簡化編碼功能:
<?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'];
如果有幾百種可能的結構,可能的結構是什麼? –
檢查您的ide重構 – Sednus
a,b,c,a1,a2,a11,b12等。 – VORiAND