2015-06-08 13 views
38

Sto cercando di implementare un semplice servizio in PHP. Il servizio deve restituire stringhe a determinate richieste. Tuttavia, quando provo a echo la stringa, PHP in qualche modo aggiunge \r\n all'inizio della stringa. Sto usando echo per produrre la risposta.Perché PHP aggiunge " r n" a una stringa vuota?

ho cercato di eco un carattere di spazio:

$test = ' '; 
echo $test; 

e nella risposta Ho ancora '\r\n'.

Ho provato header('Content-type: text'); e $string = preg_replace("\r\n", "", $string);, ma sto ancora ricevendo la nuova riga nella risposta.

Sono nuovo di PHP, quindi se questo è un concetto, qualcuno potrebbe fornirmi delle indicazioni su dove posso leggere?

+8

@EthanBierlein tranne, not. mentre php ha un comportamento non standard o non standardizzato, non antepone magicamente '\ r \ n' alle stringhe. – sgroves

+0

Stai stampando 'test' not' $ test'. C'è un '$' mancante. –

risposta

70

È possibile che questo carattere si trovi nel codice sorgente da qualche parte, ad esempio alla fine di uno dei tuoi script, ad esempio: ?>\r\n.

Una buona pratica è quella di non includere mai l'?> finale in ogni file per evitare l'emissione accidentale.

Questo consiglio è nella Guida allo stile di codifica PSR-2.

Il tag di chiusura ?> DEVE essere omesso dai file contenenti solo PHP.

È anche nello manual.

Se un file è puro codice PHP, è preferibile omettere il tag di chiusura PHP alla fine del file. Questo impedisce che spazi vuoti accidentali o nuove righe vengano aggiunte dopo il tag di chiusura di PHP, il che può causare effetti indesiderati perché PHP avvierà il buffering dell'output quando non vi è intenzione dal programmatore di inviare alcun output in quel punto dello script.

+4

Esattamente quello che stava succedendo. –

+8

Fai attenzione anche allo spazio nascosto prima del tag aperto: ' Martijn

+57

sei serio? non includere mai il tag di chiusura è la migliore pratica? –

Problemi correlati