Miglioramento fix UTF-8

This commit is contained in:
loviuz 2022-01-05 17:06:59 +01:00
parent 0c2ee46576
commit 079f83acbb
2 changed files with 31 additions and 7 deletions

View File

@ -1356,11 +1356,7 @@ class FatturaElettronica
} }
// Non ammesso // Non ammesso
// $descrizione = html_entity_decode($riga['descrizione'], ENT_HTML5, 'UTF-8'); $descrizione = $riga['descrizione'];
$descrizione = str_replace('>', ' ', $riga['descrizione']);
$descrizione = str_replace('…', '...', $descrizione);
$descrizione = str_replace('', ' ', $descrizione);
$descrizione = str_replace('ø', 'diametro', $descrizione);
// Aggiunta dei riferimenti ai documenti // Aggiunta dei riferimenti ai documenti
if (setting('Riferimento dei documenti in Fattura Elettronica') && $riga->hasOriginalComponent()) { if (setting('Riferimento dei documenti in Fattura Elettronica') && $riga->hasOriginalComponent()) {

View File

@ -648,9 +648,10 @@ class Validator
'—' => '-', '—' => '-',
'…' => '...', '…' => '...',
'~' => '-', '~' => '-',
'®' => '',
]); ]);
$output = preg_replace('/[[:^print:]]/', ' ', utf8_decode($output)); $output = self::sanitizeXML($output);
} }
// Riduzione delle dimensioni // Riduzione delle dimensioni
@ -686,4 +687,31 @@ class Validator
return $output; 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;
}
} }