deved-it / fattura-elettronica

Fatturazione Elettronica Italiana
https://deved-it.github.io/fattura-elettronica
MIT License
78 stars 36 forks source link

verifica() lancia eccezione con pec centotrentuno@pec-legal.it #81

Closed mircobabini closed 3 years ago

mircobabini commented 3 years ago

Describe the bug Quando viene chiamata ->setCessionarioCommittente con 4° parametro pec = centotrentuno@pec-legal.it, viene restituito il seguente errore dalla funzione ->verifica():

Element 'PECDestinatario': [facet 'pattern'] The value 'centotrentuno@pec-legal.it' is not accepted by the pattern '([!#-'*+\/-9=?A-Z^-~-]+(\\.[!#-'*+\/-9=?A-Z^-~-]+)*|\"(\\[\\]!#-[^-~ \\t]|(\\\\[\\t -~]))+\")@([!#-'*+\/-9=?A-Z^-~-]+(\\.[!#-'*+\/-9=?A-Z^-~-]+)*|\\[[\\t -Z^-~]*\\])'

To Reproduce È sufficiente provare a creare un xml con pec impostata come nell'esempio fornito.

Additional context Ho indagato e mi sembra che la regex funzioni correttamente, così come fornita dall'xsd 1.2.1. Sembra però che il validatore fallisca, non ho avuto altri problemi con email senza il trattino. Mi chiedo se il trattino quindi possa influire, dato che rimuovendolo funziona (tuttavia l'indirizzo email corretto vede il trattino).

salgua commented 3 years ago

Grazie della segnalazione! Ho provato banalmente ad incollare la Regex su regex101 e fa correttamente il match anche con il trattino:

https://regex101.com/r/tTXx8B/1

Faccio delle ulteriori verifiche e ti faccio sapere

mircobabini commented 3 years ago

Confermo che ho indagato parecchio anche io, verificando la medesima cosa su https://www.regexpal.com/, e infatti il match viene fatto anche con il trattino. Per questa ragione non mi spiego l'errore nel check e penso ad un potenziale problema nell'XMLReader di php.

Grazie mille, resto in attesa!

salgua commented 3 years ago

C'era sicuramente qualche problema nell'interpretazione della regular expression, forse dovuta all'introduzione di PCRE2 su php7.3 e/o alla mancanza di caratteri di escape necessari per PHP. Ho risolto semplificando la regex, anche se adesso lo schema non è fedele all'originale, ma non dovrebbe causare problemi. Grazie ancora!