2010-03-19 4 views
8

Sto tentando di memorizzare una e-mail a più righe in un file ini utilizzando PHP/Zend Framework. La mia stringa contiene caratteri di nuove righe, e quando uso Zend_Config_Ini per analizzare il file ini, i caratteri della nuova riga tornano fuoriusciti, quindi vengono stampati sullo schermo, invece di un avanzamento di riga.Come faccio a sfuggire a un nuovo carattere di riga in un file .ini in modo che Zend_Config_Ini lo legga letteralmente?

Esempio:

// ini file 
message = Hi {0},\n\nThis is a test message.\nGoodbye! 

analizzato da Zend_Config_Ini come:

Hi {0},\\n\\nThis is a test message.\\nGoodbye! 

che poi viene stampato nella e-mail come:

Ciao John, \ n \ nQuesto è un messaggio di test. \ nGoodbye!

Invece voglio che la e-mail di simile a questa:

Ciao John,

Questo è un messaggio di prova.
Arrivederci!

Qualcuno sa come ottenere ciò? Grazie!

+0

Ciao, hai trovato un altro modo di fare ini rispetto all'utilizzo di virgolette doppie? – dextervip

risposta

12

Cosa succede ad usare virgolette arround i vostri valori, e l'utilizzo di nuove righe reali, in questo modo:

message = "Hi {0}, 

This is a test message. 
Goodbye!" 


A titolo di esempio, utilizzando questa porzione di codice:

$config = new Zend_Config_Ini(APPLICATION_PATH . '/config/application.ini'); 
var_dump($config->production->testmessage); 
die; 

Con application.ini contenente questo:

[production] 

testmessage = "this is 
a new 
message" 

I ottenere il seguente output dal mio var_dump:

string(21) "this is 
a new 
message" 
1

uso costante php: PHP_EOL

message = "Hi {0}," PHP_EOL PHP_EOL "This is a test message." PHP_EOL "Goodbye!" 

Nota che il PHP_EOL costante Application.ini deve apparire al di fuori delle virgolette. Altrimenti verrà interpretato come letterale.