-1

我正在尝试在面向对象编程中的选择选项上创建一个 ereg 以进行验证。尽管即使所选选项不是 ereg 的一部分,它也始终返回 true!

在我的课堂上,我有以下内容:

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');
4

1 回答 1

0

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

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

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

PS您可以轻松地将其重写为非弃用代码

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

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

PPPS 同样,您的模式与您的值不匹配。

于 2014-10-02T01:03:56.720 回答