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, ",");

Realizzare un banner di sfondo cliccabile

Si stanno diffondendo molto i banner di sfondo cliccabili. L’idea di base è avere un’immagine di sfondo che venga visualizzata all’esterno dei “contorni” del nostro sito, e che sia cliccabile.

Dopo aver consultato diverse guide, come sempre sono arrivato a una soluzione che è un mix di varie tecniche e tentativi. L’ho applicata a WordPress ma è valida su qualsiasi sito.

Supponiamo di avere 1000 pixel come larghezza del nostro sito, dovremo preparare un’immagine di sfondo più larga di quei 1000px, ad esempio 2000px, l’altezza è a piacere, ad esempio 1500px.
Lasciamo uno spazio di 100px (sempre modificabile a piacere) in alto, in modo che il banner sia visibile anche sui tablet (dove quasi sicuramente le bande laterali del banner verranno “tagliate” via).

Ecco un esempio di immagine “a ferro di cavallo”:

Banner di sfondo

vedete che viene lasciato vuoto lo spazio che verrà occupato dal sito.

Aggiungiamo nel body del codice html le seguenti righe:

<body>
<a id="skinlink" href="http://www.simonezanella.it" target="_blank"><span>&nbsp;</span></a>

e aggiungiamo al foglio di stile i seguenti parametri:

body {
margin:100px auto;
background:url('bannersfondo.jpg');
background-repeat: no-repeat;
background-position: center top;
background-attachment: scroll;
}
a#skinlink {
 position: absolute;
 top: 0;
 bottom: 0;
 left: 0;
 right: 0;
 display: block;
 z-index: 1;
}
#skinlink span {
 display: none;
}

dove al posto di bannersfondo.jpg dovete mettere il percorso alla vostra immagine di sfondo.

Ulteriore personalizzazione: se volete, potete rendere visibile lo sfondo solo in determinati giorni della settimana, basta racchiudere il codice in questo blocco condizionale:

<?
if ((date('w') == 0) OR (date('w') == 6))
{
?>
<a id="skinlink" href="http://www.simonezanella.it" target="_blank">
<span>&nbsp;</span></a>
<?
}
?>

dove date(‘w’) restituisce il numero di giorno della settimana corrente, ponendo 0 = Domenica e 6 = Sabato. Nell’esempio, il banner viene mostrato solo il sabato e la domenica.
Per evitare che il sito venga spostato di 100px di margine dall’alto negli altri giorni, si può lasciare nel foglio di stile generale le impostazioni “standard” per il body vostro sito, e aggiungere nell’header, dopo aver richiamato tutti i fogli di stile, il seguente codice:

<head>
...
<?
if ((date('w') == 0) OR (date('w') == 6))
{
?>
<style>
body {
margin:100px auto;
background:url('bannersfondo.jpg');
background-repeat: no-repeat;
background-position: center top;
background-attachment: scroll;
}
</style>
<?
}
?>
</head>

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)