[PHP] file di testo e array

paolissimo

Nuovo Utente
4 Gen 2018
16
0
1
Buonasera,
dopo innumerevoli tentativi provo a chiedere aiuto, sperando qualcuno di voi possa darmi una mano. Gioco con PHP da tre mesi e quello che cerco di fare è apparentemente semplice (lo faccio già in ASP ) ma, evidentemente, sbaglio qualcosa.

Ho un file (.dat) che è un file di testo scritto automaticamente, composto da 4 righe.
Ho pensato di usare l'istruzione File per leggerlo in quanto crea un array con ciascuna riga del testo

Array ricavato
[0] dato non importante
[1] dato da estrarre
[2] riga vuota
[3] dato da estrarre

e in effetti viene restituito correttamente (visualizzando le variabili con echo) ma al momento di utilizzare il risultato in un ciclo If else qualcosa va storto.

PHP:
$testo = file("c:\Info.dat");

$Uno = str_replace("On1=","",$testo[1]);
$Due = str_replace("On2=","",$testo[3]);

if ($Uno == "Giornale") {

         $evento = "Aperitivo";
         $titolo = "Domani sera";
         $img1 = "/img/01.jpg";
         $img2 = "/img/02.jpg";
         $img3 = "/img/03.jpg";

} else {

 $titolo = "no titolo";
 $evento = "no evento";

  $img1 = "/img/noimg.jpg";
  $img2 = "/img/noimg2.jpg";
  $img3 = "/img/noimg3.jpg";
}

Il problema è che il confronto funziona SOLO con la variabile $Due, mentre la variabile $Uno (pur essendo uguale ) viene ignorata e il ciclo passa ad Else.
Spero di essermi spiegato.

Tra l'altro utilizzo lo stesso file di testo con ASP e funziona tutto correttamente... non capisco.
Perdonate le eventuali castronerie da novellino e grazie per l'attenzione.

Paolo
 
Controlla l'entry point della condizione, probabilmente hai qualche spazio aggiuntivo alla fine della stringa...

Nel replace aggiungi il trim
PHP:
str_replace("On1=","",trim($testo[1]));
 
  • Like
Reactions: paolissimo
Controlla l'entry point della condizione, probabilmente hai qualche spazio aggiuntivo alla fine della stringa...

Nel replace aggiungi il trim
PHP:
str_replace("On1=","",trim($testo[1]));

Grazie Marcus! Il problema era proprio quello, ora funziona alla grande!
Già che ci sono provo a chiederti un'altra soluzione: ho tentato di far leggere il file direttamente da un pc che ho in rete locale e che ho collegato come unita di rete (z) ma senza riuscirvi. Per ovviare il problema faccio copiare sul computer dove gira PHP server il file con un batch dos... ma non è il massimo. Ritieni sia possibile farlo?
 
Devi rendere la directory leggibile.
Non è il massimo la soluzione, ma puoi adattarlo facilmente anche con uno script php installato sulla macchina in rete...
 
Devi rendere la directory leggibile.
Non è il massimo la soluzione, ma puoi adattarlo facilmente anche con uno script php installato sulla macchina in rete...

Ho fatto altre prove ma non riesco. La directory è condivisa in rete e sul server dove gira PHP condivisa come unità di rete, in pratica si accede liberamente con z:\Info.dat. Non riesco a farglielo vedere.
 
Perchè tu accedi da Z:??? Forse meglio da indirizzo IP!
In verità ho provato prima con l'IP e poi, non essendoci riuscito, con Z. Anche cercando su internet non ho trovato soluzioni a questo quesito. Sei conosci il modo ti prego di illuminarmi con un esempio pratico perche' ho già fatto decine di tentativi.
Devo leggere il file di testo dal disco C (condiviso) di un pc in rete locale e mi sembra impossibile non riuscirci... eppure.
 
Posta il comando!

PHP:
$testo = file("c:\Info.dat");

fopen ("http://www.example.com/", "r");

ho provato a sostituire con l'ip 192.168.1.120 il percorso locale, con doppi e tripli backslash (non ricordo più tutte le prove che ho fatto) il senso è quello: devo leggere un file posto su un computer in rete locale e non conosco il comando o la sintassi corretta per farlo. Al contrario leggere un file remoto posto su un server http, con fopen, sembra banale.
 
Scusa, ma tu devi puntare al file remoto quindi se monti l'unità sulla macchina dove ci sta il web server dovresti fare file('Z:\\percorso_file')
e non file("c:\Info.dat");
 
Scusa, ma tu devi puntare al file remoto quindi se monti l'unità sulla macchina dove ci sta il web server dovresti fare file('Z:\\percorso_file')
e non file("c:\Info.dat");
Ma certamente, avevo provato anche con ('z:\\info.dat'), ma con l'unità il risultato non cambia. Il fatto che anche cercando in rete non ci sia uno straccio di indicazione mi fa iniziare a pensare che con PHP sia impossibile
 
mi fa iniziare a pensare che con PHP sia impossibile
Probabilmente non hai dato i permessi giusti... Poi dipende dal tipo di condivisione che hai fatto, ed anche dal firewall... Al massimo ti conviene creare un server FTP sulla macchina che ha il file remoto, effettui una connessione ed il gioco è fatto!
 

Discussioni simili