Comment puis-je échapper un caractère de nouvelle ligne dans un fichier .ini de sorte que Zend_Config_Ini lit littéralement?
-
21-09-2019 - |
Question
Je suis en train de stocker une ligne de plusieurs adresses e-mail dans un fichier ini en utilisant PHP / Zend Framework. Ma chaîne a de nouvelles lignes personnages, et quand je l'utilise Zend_Config_Ini pour analyser le fichier ini, les nouveaux personnages de ligne Reviens échappé, ils sont imprimés à l'écran, au lieu d'un saut de ligne.
Exemple:
// ini file
message = Hi {0},\n\nThis is a test message.\nGoodbye!
est analysé par Zend_Config_Ini comme:
Hi {0},\\n\\nThis is a test message.\\nGoodbye!
qui est ensuite imprimé dans le courrier électronique en tant que:
Salut Jean, \ n \ nLa est un message de test. \ NGoodbye!
Au lieu de cela, je veux l'e-mail à ressembler à ceci:
Salut John,
Ceci est un message de test.
Au revoir!
Quelqu'un sait comment y parvenir? Merci!
La solution
Qu'en est-il en utilisant des guillemets doubles arround vos valeurs, et en utilisant les nouvelles lignes réelles, comme ceci:
message = "Hi {0},
This is a test message.
Goodbye!"
À titre d'exemple, en utilisant cette portion de code:
$config = new Zend_Config_Ini(APPLICATION_PATH . '/config/application.ini');
var_dump($config->production->testmessage);
die;
Avec application.ini
contenant ceci:
[production]
testmessage = "this is
a new
message"
Je reçois la sortie suivante de mon var_dump
:
string(21) "this is
a new
message"
Autres conseils
Utilisation constante php: PHP_EOL
message = "Hi {0}," PHP_EOL PHP_EOL "This is a test message." PHP_EOL "Goodbye!"
Notez que la PHP_EOL constante application.ini doit apparaître en dehors des guillemets. Sinon, il sera interprété comme un littéral.