всё намного проще можно сделать
проверять если это почта то ищем почту, иначе ищем по номеру телефона
что то вроде этого
if(!empty($data['filter_contact'])) {
if(filter_var($data['filter_contact'], FILTER_VALIDATE_EMAIL)) {
$sql .= " AND c.email LIKE '" . $this->db->escape($data['filter_contact']) . "%'";
} else {
$filter_telephone = preg_replace('/[^0-9]/', '', $data['filter_contact']);
$sql .= " OR REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(c.telephone,'+',''),'-',''),' ',''),'(',''),')','') LIKE '%" . $this->db->escape($filter_telephone) . "%'";
}
}
или вообще в админке сделать отдельные пару полей, не общее для email и телефона, а отдельно поле для телефона и отдельно для почты