eliminare caratteri speciali mettendo uno spazio

AndreaCerre

Utente Attivo
7 Giu 2020
35
0
6
Ho bisogno di aiuto:
devo importare un file txt in una tabella mysql con il comando LOAD DATA,
ma a causa dei caratteri diacritici non mi importa tutti i records, perchè quando utilizzo le funzioni di replace non mi mantiene le corrette
lunghezze dei campi

Esempio
$line originale:
0192;021;1;800844; ;Interventi gia› ;0000;

Codice:
$line = iconv('UTF-8', 'ASCII//IGNORE', $line);
    
 $line = preg_replace('/(?>[\x00-\x1F]|\xC2[\x80-\x9F]|\xE2[\x80-\x8F]{2}|\xE2\x80[\xA4-\xA8]|\xE2\x81[\x9F-\xAF])/', '', $line);

$line in output:
0192;021;1;800844; ;Interventi gia 0;000 ;

vedete che mi sposta lo 0 al campo precedente:

non posso postare tutto il codice ma per darvi più visibilità possibile vi posto il codice che crea il file txt finale

creo la struttura del file txt di output
Codice:
$name021 = $uploadDir2."birart021.txt";
    $handle021 = fopen($name021,"w+");
    $dim021 = array (3,1,6,1,80,4,161);
recupero le righe che dovrò inserire nel file di output dal file txt originale che ha record identificativo '021'
Codice:
case "021" :
    //Record 021
    fwrite($handle021,$idfilebirart.";");
    for ($i = 0; $i < count($dim021); $i++) {
                    $field = str_pad (substr($line,$index,$dim021[$i]),$dim021[$i]," ",STR_PAD_RIGHT).";";
                    fwrite($handle021,$field);
                    $index += $dim021[$i];
                }
                fwrite($handle021,"\r\n");
                $index = 0;
    break;