Ho recentemente effettuato la migrazione del sito da un server ad un altro, e una serie di servizi interattivi non funzionavano più; mi sono accorto così che leggendo da un file .txt il rientro a capo appariva costituito da un solo carattere anziché due (il classico "\r\n").
In effetti, sostituendo ad esempio:
$data=file('sorgente.txt');
$riga=strlen($data[0])-2;
con:
$data=file('sorgente.txt');
$riga=strlen($data[0])-1;
...tutto andava a posto.
Il problema è che ho una copia del sito in locale, gestito da Apache, per cui la stessa pagina funzionava in locale ma non in remoto o viceversa...
Allora ho creato una funzione PHP_SERVER() che mi restituisce 1 se non sto operando in locale:
if((substr($_SERVER['HTTP_REFERER'],0,16)!="http://localhost")) { return 1; }
cosicché la mia riga di comando diventa:
$riga=strlen($data[0])-(2-PHP_SERVER());
Di nuovo: tutto sembra risolto, anche se un po' macchinoso...
MA adesso ci sono altri servizi che non riesco a riattivare e credo che dipenda sempre dallo stesso tipo di problema, stavolta in fase di scrittura anziché in lettura... In pratica, sto cercando di capire con quale carattere sia stato sostituito "\r\n" per poter applicare una soluzione simile a quella sopra descritta.
Che devo fare? Ci sto litigando da due giorni...