[PHP] confrontare stringhe importate da csv

Stato
Chiusa ad ulteriori risposte.

evilsait83

Nuovo Utente
25 Feb 2019
8
0
1
Salve,
sto importando un file csv, riesco a leggere tutto, ma non riesco a confrontarle con le stringhe in php.
Mi faccio capire meglio:
PHP:
// leggo il file e leggo le righe
$columns = explode(';',$riga);
echo $columns[2];  // stampa a video la stringa "GIOCATTOLI"
echo substr($columns[2],0,4);  // mi dovrebbe stampare la stringa "GIOC" ma mi stampa "GI"

infatti non non mi entra mai in questo if
PHP:
if($columns[2]=="GIOCATTOLI")
ho capito che è un problema di codifica di stringhe, ma non riesco a capire di che tipo
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
// mi dovrebbe stampare la stringa "GIOC" ma mi stampa "GI"
questo fa pensare che vi siano spazi non significativi tra il separatore delle colonne ed i valori
giusto per verificare questa tesi, anteponi al trattamento della colonna questo codice,

$columns[2] = trim($columns[2]);

se il risultato é positivo, puoi estendere questo trattamento a tutte le colonne che usi

verifica anche la possibilità di utilizzare "fgetcsv"
http://php.net/manual/en/function.fgetcsv.php
per leggere le righe del file csv e che ti restituisce l'array "ripulita"
 

evilsait83

Nuovo Utente
25 Feb 2019
8
0
1
Salve,
Si ho provato anche con l'eliminazione degli spazi, il fatto che mi stampa la metà dei caratteri con substr penso sia dovuto alla codifica dei caratteri, mi sono informato e vengono salvati in utf8. Si può convertire utf8 in stringa normale per poterla confrontare?
 

evilsait83

Nuovo Utente
25 Feb 2019
8
0
1
Ho provato anche con fgetcsv ma il risultato non cambia, la cosa strana è questa:
PHP:
$cat="GIOCATTOLI";
echo substr($cat,0,3); // stampa GIOC, quindi tutto ok
echo $row[2]; // stampa GIOCATTOLI
echo substr($row[2],0,3) // mi stampa G
ho provato anche con utf8_encode e utf_decode ma non cambia nulla.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
prova a sostituire così,
echo mb_substr($row[2],0,3,'UTF-8');

se non funziona, posta uno zip con alcune righe del file csv, se puoi
 
Ultima modifica:

evilsait83

Nuovo Utente
25 Feb 2019
8
0
1
Buongiorno,
ho provato ma sempre con lo stesso risultato, ho provato anche ad aprirlo con blocco note e salvarlo in txt ma niente, ti allego il file txt con 3 righe
 

Allegati

  • import.txt
    898 bytes · Visite: 264

evilsait83

Nuovo Utente
25 Feb 2019
8
0
1
Ho trovato!!!!
Aprendolo con Notepad++ mi dice che la codifica dei caratteri è UCS-2 LE BOM, salvandolo in UTF8 con notepad poi funziona.
Vorrei convertirlo in UTF-8 on in UTF-16 direttamente da PHP se è possibile.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
puoi usare lo script che ti posto, aggiustandolo per la tua necessità, considera che il tuo esempio,
é stato usato senza conversioni
ha la riga dei titoli (delle colonne) e lo script la vuole
la colonna descrizione ha virgolette che dovrai gestire,
al termine del file vi sono righe vuote che lo script scarta

nello screenshot "empty" identifica le colonne che sono vuote
PHP:
<?php
require_once 'myUtils/show_vars.php';

function loadCSV($file) {

    $arrData = array();                                                        // Create an array to hold the data

    $header = NULL;                                                            // Create a variable to hold the header information

    if (($handle = fopen($file, 'r')) !== FALSE) {                             // If the file can be opened as readable, bind a named resource

        while (($row = fgetcsv($handle,0,';','"')) !== FALSE) {                // Loop through each row

            foreach($row as &$field) {                                         // Loop through each field

                $field = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $field);   // Remove any invalid or hidden characters
            }
            if ($header) {                                                     // If the header has been stored

                if (count($row) > 1) {                                         // Discard empty rows

                    $arrData[] = array_combine($header, $row);                 // Create an associative array with the data
                }
            }
            else {                                                             // Else the header has not been stored

                $header = $row;                                                // Store the current row as the header
            }
        }
        fclose($handle);                                                       // Close the file pointer
    }
    return $arrData;
}

ini_set('auto_detect_line_endings', true);                                     // Auto detect line endings

$data = loadCSV('import.txt');                                                 // Load the CSV and return an associative array

echo "<h1>".substr($data[2]['Categoria'],0,4)."</h1>".show_var($data);         // Check substr and Output the contents of the array
?>

questo é il risultato

upload_2019-2-26_21-5-12.png
 
Ultima modifica:

evilsait83

Nuovo Utente
25 Feb 2019
8
0
1
Gentilissimo, ora provo, ma il file "myUtils/show_vars.php" serve solo per disegnare la tabella?
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
@macus_adi
caro amico hai ragione, ma credo che nessuno possa dire di sviluppare codice senza utilizzare quanto disponibile,

nel mio caso tutto ciò che utilizzo, é stato studiato, analizzato e modificato per renderlo meglio fruibile da me stesso e da chi lo vuole altrettanto utilizzare

tutto ciò che pubblico é sicuramente funzionante e buona parte é tratto dai miei "attrezzi di lavoro"

certo che se ogni volta che viene dato un supporto, credo ben accettato, si debba arrivare ad una disfida tra noi,
mi sembra assurdo

considera che il mio supporto vuole sempre aiutare a risolvere con il minimo "ingombro possibile" ovvero cercando di essere solo efficace

spero che capisci una volta per tutte
non amo il tuo modo di proporti sia nel supporto sia nel voler dimostrare la tua e-Potenza ….
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
grazie per avermi segnalato la pagina,
che non avevo mai vista,
@marino51 basta, è palesemente copiata, persino le variabili sono identiche, tu lavori da molto tempo, quante volte è capitato che 2 programmatori nominino le variabili allo stesso modo???? MAI....
Diamoci un taglio, per correttezza ti ho scritto in privato, ma a te non interessa quindi replico qui....

Logvar TUA:
PHP:
 if (is_array($value) || is_object($value))
    {
        $recursion = FALSE;
        if (is_object($value))
        {
            foreach ($refChain as $refVal)
            {
                if ($refVal === $value)
                {
                    $recursion = TRUE;
                    break;
                }
            }
            array_push($refChain, $value);
        }
Log var di 6 anni fa (oliverSPAMMENOT at e-geek dot com dot au)
PHP:
if (is_array($value) || is_object($value)) {
    $recursion = FALSE;
    if (is_object($value)) {
      foreach ($refChain as $refVal) {
        if ($refVal === $value) {
          $recursion = TRUE;
          break;
        }
      }
      array_push($refChain, $value);
    }
questa parola mi ha fatto capire come risolvere un problema,
dopo aver inserito la riga della profondità nella mia show_var,
ha preso a visualizzare anche gli xml
con grande soddisfazione


Non bisogna leggere altri post per capire come fare se si sa cosa si è scritto e soprattutto il come viene eseguito.....
Cmq il flusso per la risoluzione del problema era abbastanza semplice senza dover leggere alcun post :
Postulato: La funct accetta un OBJ o Array
quindi....
Domanda: Come convertire XML in ARRAY?
.... bastava chiedere...
Soluzione: json_decode(json_encode(simplexml_load_string()));
Qui la documentazione: http://php.net/manual/en/libxml.constants.php
PHP:
$xml=file_get_contents('https://www.w3schools.com/xml/simple.xml');
$my_xml=json_decode(json_encode(simplexml_load_string($xml, "SimpleXMLElement", LIBXML_NOCDATA)));
show_var($my_xml);
Evitiamo inutili repliche.... e chiedo scusa in anticipo per l'offtopic!
 
Ultima modifica:

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
E' curioso il tuo astio verso di me,
non ti conosco, non so chi sei, non ho mai avuto affari o rapporti con te
tento di aiutare chi cerca supporto nel forum,
qualunque software io possa usare per supportare le persone penso sia secondario rispetto al risultato
giusto per farti capire, questo software può essere usato anche per inviare le fatture elettroniche ...
e non é copiato da nessuna parte …. caro amico,
upload_2019-3-2_9-41-47.png

upload_2019-3-2_9-42-16.png

ma forse queste cose non le capisci ...
o pensi che mi metta a discutere con te in privato ...
o il tuo e-Pene non é valorizzato a sufficienza ?
(con tante scuse per tutte le persone che leggono questo post)
 

macus_adi

Utente Attivo
5 Dic 2017
1.343
91
48
IT/SW
E' curioso il tuo astio verso di me,
.... vabbè..... Tu fai asserzioni ed io rispondo... stop...
Non mi interessa cosa fai e soprattutto il come... Poi se uno non può esprimere la propria...

o pensi che mi metta a discutere con te in privato ...
Questo ti fa sicuramente onore e rende bene l'idea di quanto tu sia spigoloso....

Chi semina vento, raccoglie tempesta non dimenticarlo @marino51

ScusateCI!
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
@macus_adi
@marino51
Ci date un taglio per favore di fare polemiche in ogni discussione che partecipate non fa bene a voi e neanche al forum!
Mi raccomando
Grazie infinite

@evilsait83
Apri una nuova discussione se vuoi qui chiudo scusami Grazie
 
Stato
Chiusa ad ulteriori risposte.
Discussioni simili
Autore Titolo Forum Risposte Data
R Confrontare il dominio di una mail con una stringa contenente un dominio personalizzato, tutto ciò in php o javascript PHP 0
S [PHP] Confrontare due array con valori quasi uguali PHP 2
P [PHP] Confrontare due password e due email PHP 4
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0

Discussioni simili