diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php index d2a0bd288..7c6ba5800 100755 --- a/plugins/exportFE/src/FatturaElettronica.php +++ b/plugins/exportFE/src/FatturaElettronica.php @@ -1356,11 +1356,7 @@ class FatturaElettronica } // Non ammesso ’ - // $descrizione = html_entity_decode($riga['descrizione'], ENT_HTML5, 'UTF-8'); - $descrizione = str_replace('>', ' ', $riga['descrizione']); - $descrizione = str_replace('…', '...', $descrizione); - $descrizione = str_replace('’', ' ', $descrizione); - $descrizione = str_replace('ø', 'diametro', $descrizione); + $descrizione = $riga['descrizione']; // Aggiunta dei riferimenti ai documenti if (setting('Riferimento dei documenti in Fattura Elettronica') && $riga->hasOriginalComponent()) { @@ -1754,4 +1750,4 @@ class FatturaElettronica 'id_record' => $this->getDocumento()['id'], ]; } -} +} \ No newline at end of file diff --git a/plugins/exportFE/src/Validator.php b/plugins/exportFE/src/Validator.php index 6f4fd42dd..842d51af8 100755 --- a/plugins/exportFE/src/Validator.php +++ b/plugins/exportFE/src/Validator.php @@ -648,9 +648,10 @@ class Validator '—' => '-', '…' => '...', '~' => '-', + '®' => '', ]); - $output = preg_replace('/[[:^print:]]/', ' ', utf8_decode($output)); + $output = self::sanitizeXML($output); } // Riduzione delle dimensioni @@ -686,4 +687,31 @@ class Validator return $output; } + + + /** + * Removes invalid characters from a UTF-8 XML string + * + * @param string a XML string potentially containing invalid characters + * @return string + */ + static function sanitizeXML($string) + { + $result = ''; + $current = ''; + $length = strlen($string); + + for ($i=0; $i < $length; $i++) { + $current = ord($string{$i}); + + if ($current < 0x20 || $current > 0x7E) { + $result .= ' '; + } + else { + $result .= chr($current); + } + } + + return $result; + } }