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
// $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'],
];
}
}
}

View File

@ -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;
}
}