Problemas com função que utiliza preg_match

Olá amigos!

Tenho uma biblioteca que possui apenas uma função para a validação de endereços de e-mail, esta biblioteca/função funcionava até antes da versão 8.00.0047. Depois que eu atualizei o scriptcase para esta versão todos os formulários que utilizam esta biblioteca passaram a apresentar o seguinte erro:

Parse error: syntax error, unexpected ‘’ (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /opt/NetMake/v8/wwwroot/scriptcase/app/zweb/cad_mailaccount/cad_mailaccount_apl.php on line 7737

Abaixo, a função para a validação de e-mails:

<?php function CheckValidMail($email) { // Função para validação de endereços de e-mail // First, we check that there's one @ symbol, and that the lengths are right if (!preg_match("/^[^@]{1,64}@[^@]{1,255}$/", $email)) { // Email invalid because wrong number of characters in one section, or wrong number of @ symbols. return false; } // Split it into sections to make life easier $email_array = explode("@", $email); $local_array = explode(".", $email_array[0]); for ($i = 0; $i < sizeof($local_array); $i++) { if (!preg_match("/^(([A-Za-z0-9!#$%&'*+\/=?^_`{|}~-][A-Za-z0-9!#$%&'*+\/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$/", $local_array[$i])) { return false; } } if (!preg_match("/^\[?[0-9\.]+\]?$/", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name $domain_array = explode(".", $email_array[1]); if (sizeof($domain_array) < 2) { return false; // Not enough parts to domain } for ($i = 0; $i < sizeof($domain_array); $i++) { if (!preg_match("/^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$/", $domain_array[$i])) { return false; } } } return true; } ?>

Alguém tem alguma idéia ?

Atenciosamente
Erlon.

Qual é a linha 7737 ?
[]s

Erlon,

Nesta linha:

if (!preg_match("/^(([A-Za-z0-9!#$%&’*+/=?^_{|}~-][A-Za-z0-9!#$%&'*+\/=?^_{|}~.-]{0,63})|("[^(\|")]{0,62}"))$/",

Estás usando as aspas duplas pra abrir e fechar, mas tem mais aspas duplas dentro dos caracteres do preg_match. Mude para aspas simples.

É verdade Kleyber, mas elas tão com a barra antes () pra anular o efeito de fechar a string.
Precisa ver o código fonte gerado pra saber qual linha tá dando erro.

O problema é o parse do SC… mas vamos ver qual o conteúdo da linha 7737.