Convertire CSV in array multidimensionale in PHP

Ecco un codice per leggere un file CSV in PHP e convertirlo in un array multidimensionale.

Prendo un classico file CSV, di cui per esempio mostro di seguito le prime 4 righe:

2018-10-05 05:54;45334;57732;22;
2018-10-05 05:55;45334;57732;22;
2018-10-05 05:56;45335;57733;22;
2018-10-05 05:57;45335;57733;22;

in cui ogni riga è formata da più campi separati da un punto e virgola (;). In PHP:

$fileName = "nome_del_file.csv"; //questo è il nome del file da caricare
$csvData = file_get_contents($fileName);
$Data = str_getcsv($csvData, "\n"); //scansiono le righe
foreach($Data as &$Row) {
$Row = str_getcsv($Row, ";"); //scansiono gli elementi in ogni riga, separati dal punto e virgola
}

Ora posso accedere a ogni elemento di ogni riga direttamente dalla variabile $Data, ad esempio $Data[0][1] (riga 0 posizione 1) conterrà il valore 45334. Eseguendo il comando print_r($Data) posso stampare a schermo per debug il contenuto dell’array, come mostrato qui sotto:

Array
(
[0] => Array
(
[0] => 2018-10-05 05:54
[1] => 45334
[2] => 57732
[3] => 22
)
//ecc...

Nel caso il separatore non sia il punto e virgola ma la virgola è sufficiente cambiarlo nell’istruzione:

$Row = str_getcsv($Row, ";");

che, nel caso della virgola usata come separatore, diventa:

$Row = str_getcsv($Row, ",");

Consentire caricamento file xml in WordPress

Di norma WordPress consente il caricamento di file solo per le estensioni ritenute “sicure”. A causa delle nuove leggi per le pubbliche amministrazioni queste ultime hanno la necessità di caricare sui propri siti dei file XML e renderli accessibili ai vari Ministeri ed Enti. WordPress non lascia caricare file XML per questioni di sicurezza (non che il file xml abbia in sè delle criticità, ma non rientra nelle estensioni consentite di default), per poterli caricare bisogna aggiungere nel file functions.php (lo trovate nella cartella del vostro tema) le seguenti righe:

function my_myme_types($mime_types){
        $mime_types[‘xml‘] = ‘application/xml‘; //aggiunge l’estensione XML
        return $mime_types;
}
add_filter(‘upload_mimes’, ‘my_myme_types’, 1, 1);

Se avete realizzato un tema figlio potete creare un nuovo file functions.php da inserire nella cartella del tema figlio contenente le righe indicate sopra.
Per aggiungere tutte le estensioni di cui si ha bisogno è sufficiente aggiungere all’array $mime_types quelle desiderate.

Se non siete programmatori e volete un modo veloce per aggiungere questa funzionalità al vostro sito in WordPress, potete scaricare il plugin gratuito che ho realizzato: scarica caricaxml

(aggiornato a WordPress 4.7.1)

Mysql problema connessione upgrade php Linux Centos

Succede spesso sui server con sistema oeprativo Linux Centos un problema di connessione a MySql dopo l’upgrade di PHP e MYSQL.

Gli errori a video sono:

MySQL Daemon failed to start.

ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’

Si risolve nel seguente modo:

cercare il file my.cnf, si trova in /etc/my.cnf

sostituire il contenuto con:

[mysql.server]
user=mysql
[mysqld]
local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=1
#skip-bdb
innodb_buffer_pool_size=2M
innodb_additional_mem_pool_size=500K
innodb_log_buffer_size=500K
innodb_thread_concurrency=2
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

dopodichè lanciare il comando per far ripartire MySql:

service mysqld restart

 

MySQL Daemon failed to start.

Questo sito utilizza cookie tecnici per il suo funzionamento. Cliccando su Accetta, scorrendo la pagina, navigando questo sito ne acconsenti l'uso e la tua scelta sarà memorizzata per 12 mesi. I contenuti presenti rappresentano l'opinione personale dell'autore, le guide e gli appunti sono da considerarsi indicativi e si declina ogni responsabilità derivante dall'applicazione delle indicazioni contenuti in essi. Maggiori informazioni sulla privacy e sui cookie (informativa estesa)

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi