Я пытаюсь создать ereg для опции выбора в объектно-ориентированном программировании для проверки.
Хотя он всегда возвращает true, даже если выбранная опция не является частью 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');
С вызовом $oForm->checkSelect('category');
ваше выражение выглядит ereg('^[Pick]', 'category')
следовательно, это будет всегда «правда».
Я думаю, что вам нужно передать значение из формы, а не имя элемента. Например.
$oForm->checkSelect($_POST['category']);
Постскриптум Вы могли бы легко переписать его в устаревший код
preg_match('/^[Pick]/', $selectName)
P.P.S. лучше переименовать $selectName
в $selectedValue
, Вы пытаетесь проверить значение, но имя.
P.P.P.S. Кроме того, ваш шаблон не будет соответствовать вашим значениям.
Других решений пока нет …