2010-06-10 2 views
22

Per qualche motivo non è possibile utilizzare \n per creare un avanzamento riga durante l'output in un file con PHP. Scrive solo "\n" nel file. Ho provato a utilizzare "\\n", dove scrive solo "\ n" (come previsto). Ma non posso per la vita di me capire perché aggiungere \ n alle mie corde non sta creando nuove linee. Ho anche provato \r\n ma aggiunge "\r\n" alla riga nel file.Linefeeds PHP ( n) non funzionanti

Esempio:

error_log('test\n', 3, 'error.log'); 
error_log('test2\n', 3, 'error.log'); 

Uscite:

test\ntest2\n 

Uso MAMP su OSX nel caso in cui ciò che conta (una sorta di PHP config cosa forse?).

Qualche suggerimento?

risposta

42

Utilizzare le doppie virgolette. "test\n" funzionerà bene.

Se la stringa è racchiusa tra virgolette ("), PHP interpreterà più sequenze di escape per i caratteri speciali:.

http://php.net/manual/en/language.types.string.php

+0

utilizzando virgolette singole non cambia il valore in entità, quindi è necessario utilizzare il doppio! +1 – RobertPitt

+5

Come hai potuto dare una risposta così completa in meno di 2 minuti? Questa è la volta che prendo per ** leggere ** la domanda da solo! : o – cregox

2

È perché si utilizza apostrofi (') Usa quotationmarks (") invece. 'chiede a PHP di usare qualsiasi cosa si trovi tra gli apostrofi alla lettera.

3

È necessario utilizzare le virgolette. Le virgolette hanno più caratteri di escape.

error_log("test\n", 3, 'error.log'); 
error_log("test2\n", 3, 'error.log'); 
2

Le virgolette sono ciò che si desidera. Le virgolette singole ignorano l'escape \. Le virgolette valuteranno anche le espressioni variabili.

Controllare this page nel manuale php per ulteriori informazioni.

5

Sono sicuro che si sta eseguendo l'output in un file html. Il problema è che html ignora le newline nella sorgente, il che significa che devi sostituire le nuove righe con <br/> se vuoi una nuova riga nella visualizzazione della pagina risultante.

21

\n non è destinato a essere visto come una nuova riga dall'utente finale, è necessario utilizzare l'elemento HTML <br/> per quello. /n influenza solo il modo in cui l'html generato da php appare nel codice sorgente della pagina web. se vai sulla tua pagina web e fai clic su "visualizza sorgente", vedrai l'html generato da php come una lunga riga. Non carino. Questo è ciò che \n è per ; per interrompere l'html generato da php in linee più corte. Lo scopo di \n è di creare una pagina di 'vista sorgente' più carina.

+0

Lo accetterei come la risposta! – mok

+0

Perché indirizza la pagina "visualizza sorgente" invece dell'output della pagina Web? –

1

per posizionare il \n tra virgolette cercano


$LOG = str_replace('\n', "\n", $LOG); 
3

nl2br() uso funzione per la creazione di nuova linea

echo nl2br("Welcome\r\n This is my HTML document", false); 

L'esempio precedente uscita:

Benvenuti
Questo è il mio documento HTML

5

Quando si esegue uno script PHP in un browser, per impostazione predefinita verrà visualizzato come HTML. Se i libri che stai utilizzando mostrano altrimenti, il codice o l'illustrazione non sono accurati. Puoi utilizzare "visualizza sorgente" per visualizzare ciò che è stato inviato al browser e vedrai che i tuoi feed di linea sono presenti.

<?php 
echo "Line 1\nLine 2"; 
?> 

Questo renderà nel browser come:

Line 1 Line 2 

Se è necessario inviare testo normale al vostro browser, è possibile usare qualcosa come:

<?php 
header('Content-type: text/plain'); 
echo "Line 1\nLine 2"; 
?> 

Questo stamperà:

Line 1 
Line 2 
0

Se si desidera stampare qualcosa di simile a questo con una nuova riga (\ n) dopo che è:

<p id = "theyateme">Did it get eaten?</p> 

Per stampare quanto sopra, si dovrebbe fare questo:

<?php 
    print('<p id = "theyateme">Did it get eaten?</p>' . "\n"); 
?> 

Il codice client dall'alto sarebbe:

<p id = "theyateme">Did it get eaten?</p> 

L'output di cui sopra sarebbe:

c'è arrivato mangiato?

So che è difficile, ma ho sempre farlo in quel modo, e siquasi avere sempre a farlo in quel modo.

A volte si desidera che PHP stampi \ n sulla pagina invece di dare una nuova riga, come nel codice JavaScript (generato da PHP).

NOTA sulla risposta: Potrebbe essere come: Perché hai usato la stampa anziché l'eco (mi piace il mio eco). Questo perché preferisco la stampa su echo e printf, perché in alcuni casi funziona meglio (di solito i miei casi), ma in questo caso può essere eseguita correttamente con l'eco.