Как экранировать символ новой строки в файле .ini, чтобы Zend_Config_Ini считал его буквально? - PullRequest
8 голосов
/ 19 марта 2010

Я пытаюсь сохранить многострочную электронную почту в INI-файле, используя PHP / Zend Framework. В моей строке есть символы новой строки, и когда я использую Zend_Config_Ini для анализа файла ini, символы новой строки возвращаются с экранированием, поэтому они выводятся на экран вместо перевода строки.

Пример:

// ini file
message = Hi {0},\n\nThis is a test message.\nGoodbye!
Zend_Config_Ini анализирует

как:

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

, который затем распечатывается в электронном письме как:

Привет, Джон, \ n \ nЭто тестовое сообщение. \ NПрощаемся!

Вместо этого я хочу, чтобы электронная почта выглядела так:

Привет, Джон,

Это тестовое сообщение.
До свидания!

Кто-нибудь знает, как этого добиться? Спасибо!

Ответы [ 2 ]

12 голосов
/ 19 марта 2010

Как насчет использования двойных кавычек вокруг ваших значений и использования настоящих новых строк, например:

message = "Hi {0},

This is a test message.
Goodbye!"


Как пример, используя эту часть кода:

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

С application.ini, содержащим это:

[production]

testmessage = "this is
a new
message"

Я получаю следующий вывод из var_dump:

string(21) "this is
a new
message"
1 голос
/ 30 сентября 2014

Использовать константу php: PHP_EOL

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

Обратите внимание, что константа PHP_EOL в application.ini должна появляться вне кавычек. В противном случае он будет интерпретирован как литерал.

...