nfephp-org / sped-common

Classes comuns usadas nas atividades e classes das API's de NFe, CTe e MDFe
Other
97 stars 121 forks source link

Tratamento de caracteres especiais #228

Closed p4bl04p closed 4 years ago

p4bl04p commented 4 years ago

Boa tarde. Alguns fabricantes de peças possuem caracteres especiais na formação de seus codigos, exemplo: P&A1273 (Anel CAL1016), quando ocorre de existir este casos com o caracteres & < > "" '' é retornado o erro DOMDocument::createElement(): unterminated entity reference.

Alterando o fonte para criar primeiro o elemento de depois alimentar o conteudo o erro não acontece: if ($obrigatorio || $content !== '' || $force) { if(stristr($content, '&') !== false ) { $temp = $this->createElement($name); $nodeTxt = $this->createTextNode($content); $temp->appendChild($nodeTxt);
} else { $temp = $this->createElement($name, $content); } $parent->appendChild($temp); }

Ou se tratarmos a variavel $content com a função htmlspecialchars(), mas neste caso eu entendo que nem todo o conteudo ira vir de uma pagina html.

$content = (string) $content; $content = trim($content); $content = htmlspecialchars($content); if ($obrigatorio || $content !== '' || $force) { $temp = $this->createElement($name, $content); $parent->appendChild($temp); }

p4bl04p commented 4 years ago

Apos varios testes diferentes notei que os caracteres sempre são convertidos para html.