у себя я этот вопрос решил просто:
поменял
$pattern = '/^[A-Z0-9._%-+]+@[A-Z0-9][A-Z0-9.-]{0,61}[A-Z0-9]\.[A-Z]{2,6}$/i';
if (!preg_match($pattern, $this->request->post['email'])) {
$this->error['email'] = $this->language->get('error_email');
}на
if (!$this->filter_string($this->request->post['email'], "2")) {
$this->error['email'] = $this->language->get('error_email');
}и соответственно добавил функцию
/*=============================================
| If you want to validate an email in one line, use filter_var() function !
| http://fr.php.net/manual/en/function.filter-var.php
|
| easy use, as described in the document example :
| var_dump(filter_var('
[email protected]', FILTER_VALIDATE_EMAIL));
|=============================================*/
public function filter_string($string="", $filter="2") {
$filters["1"] = FILTER_VALIDATE_INT;
$filters["2"] = FILTER_VALIDATE_EMAIL;
$filters["0"] = FILTER_VALIDATE_BOOLEAN;
$res = filter_var($string, $filters["".$filter.""]);
return($res);
}
http://forum.opencart.com/viewtopic.php?f=2&t=25510&start=360#p132171