2014-09-26 61 views
-1

我试图在面向对象的编程中进行验证的选择选项上创建一个ereg。 虽然它总是返回true,即使选定的选项不是ereg的一部分!面向对象的Ereg选择选项

在我的课堂我有以下几点:

function makeSelect($category, $fieldName){ 
    $a = '<div>'."\n"; 
    $a .= "<select name='$fieldName'>"."\n"; 
    $a .= "<option value='' selected='true' disabled='disabled'>Pick Category</option>\n"; 
    foreach ($category as $value){ 
     $a .= "<option value='$value'>$value</option>"."\n"; 
     } 
    $a .= "</select>"."\n"; 
    $a .= "</div>"."\n"; 
    return $a; 
} 

function checkSelect($selectName){ 
    if(ereg('^[Pick]', $selectName)){ 
     $this->messageArray[$selectName] = "<span class='fail'>Please select field</span>"; 
     $this->testArray[$selectName] = false; 
    } 
    else { 
     $this->messageArray[$selectName] = "<span class='ok'>Sweet</span>"; 
     $this->testArray[$selectName] = true; 
    } 
} 

在我的主文件我设置阵列

$category = array(
    1=>'First Category', 
    2=>'Second Category', 
    3=>'Third Category', 
    4=>'Fourth Category' 
    ); 

并调用checkSelect功能

$oForm->checkSelect('category'); 
+3

**警告: 从PHP 5.3.0开始,此功能已被拒绝。依靠这个功能是非常沮丧的。** – 2014-09-26 03:41:02

回答

0

呼叫$oForm->checkSelect('category');你的表情看起来像ereg('^[Pick]', 'category')因此它会是总是“真实”。

我认为你需要从表单传递值而不是元素的名称。例如。

$oForm->checkSelect($_POST['category']); 

P.S.您可以轻松地将其重写为不弃用的代码

preg_match('/^[Pick]/', $selectName) 

P.P.S.最好将$selectName重命名为$selectedValue。你试图检查价值,但一个名字。

P.P.P.S.另外,你的模式不符合你的价值观。