система оценки сообщений об ошибках с PHP eval ()

Я тестирую систему оценки сообщений об ошибках, но я не смог заставить ее работать, чтобы реально оценить систему.

Вы видите, что с ним не так?

$errors = array(); $name = '9'; $familyname = 'family'; $user = '9user`'; $postdata = array('name' => $name,'familyname' => $familyname,'user' => $user); foreach($postdata as $key => $value) { switch($key) { case 'name': $rules = array ( 'strlen($value)>1;' => 'Your name is too short.', 'is_numeric(substr($value,0,1));' => 'Your name has to begin with a character.', 'has_specchar($value);' => 'Your name contains illegal characters.' ); foreach($rules as $rule => $error) { if(eval($rule)) $errors[] = $error; } break; case 'familyname': break; case 'user': $rules = array ( 'strlen($value)<5;' => 'The username is too short.', 'is_numeric(substr($value,0,1));' => 'The username has to begin with a character.', 'has_specchar($value);' => 'The username contains illegal characters.' ); foreach($rules as $rule => $error) { if(eval($rule)) // if(eval($rule)==1) // if(eval($rule)===1) // if(eval($rule)==true) // if(eval($rule)===true) // None of these have had an effect??! { $errors[] = $error; } } break; default: } } print_r($errors); function has_specchar($x,$excludes=array()) { if(is_array($excludes)&&!empty($excludes)) { foreach($excludes as $exclude) { $x=str_replace($exclude,'',$x); } } if(preg_match('/[^a-z0-9 ]+/i',$x)) { return true; } return false; } 

Этот массив ошибок пуст, хотя я ввел данные, которые, как я знаю, ДОЛЖНЫ запускать его, чтобы стать ошибкой ??!