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;
$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
recupero le righe che dovrò inserire nel file di output dal file txt originale che ha record identificativo '021'
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;