Como faço para escapar de um novo caractere de linha em um arquivo .ini para que Zend_Config_ini o lê literalmente?
-
21-09-2019 - |
Pergunta
Estou tentando armazenar um e-mail de múltiplas linhas em um arquivo ini usando a estrutura PHP/ZEND. Minha string possui novos caracteres de linhas e, quando eu uso o zend_config_ini para analisar o arquivo ini, os caracteres da nova linha voltam a escapar, para que sejam impressos na tela, em vez de um feed de linha.
Exemplo:
// ini file
message = Hi {0},\n\nThis is a test message.\nGoodbye!
é analisado por zend_config_ini como:
Hi {0},\\n\\nThis is a test message.\\nGoodbye!
que então é impresso no e -mail como:
Oi John, n é uma mensagem de teste. Ngoodbye!
Em vez disso, quero que o e-mail seja assim:
Oi John,
Esta é uma mensagem de teste.
Adeus!
Alguém sabe como conseguir isso? Obrigado!
Solução
Que tal usar citações duplas prejudicar seus valores e usar novas linhas reais, como esta:
message = "Hi {0},
This is a test message.
Goodbye!"
Como exemplo, usando esta parte do código:
$config = new Zend_Config_Ini(APPLICATION_PATH . '/config/application.ini');
var_dump($config->production->testmessage);
die;
Com application.ini
contendo isso:
[production]
testmessage = "this is
a new
message"
Eu recebo a seguinte saída do meu var_dump
:
string(21) "this is
a new
message"
Outras dicas
Use PHP Constant: php_eol
message = "Hi {0}," PHP_EOL PHP_EOL "This is a test message." PHP_EOL "Goodbye!"
Observe que o constante php_eol no application.ini deve aparecer fora das cotações. Caso contrário, será interpretado como literal.