2017-02-01 4 views
1

У меня есть следующая строка, загруженная из базы данных в $ message.Функция str_replace заменит заполнители

Hi,\n\nYou have a new voicemail message from ${VM_CIDNAME} (${VM_CIDNUM}), on ${VM_DATE}.\n\nThank you for using 123 Solutions.

Я пытаюсь str_replace заполнителей в этой строке с реальными данными, но поскольку PHP интерпретирует $ {VM_CIDNAME}, он не выполняет замену.

$message = str_replace("${VM_CIDNUM}", $CallerID , $message);

Как я могу заменить заполнители?

Примечание: Изменение формата заполнителей не является вариантом, поскольку оно жестко закодировано в стороннем программном обеспечении, которое я не могу изменить.

Мне также нужно str_replace символы "\ n" с символами новой строки.

Большое спасибо

+0

Попробуйте один раз без '' $ знака. Я считаю, что это рассматривается как переменная. поэтому вам может понадобиться str_replace, чтобы установить $ callerId, а затем str_replace ('$', '', text) –

+0

, если вы хотите использовать str_replace, тогда удалите знак $ из строки, потому что $ sign зарезервирован php –

ответ

1

Вы должны использовать одиночные кавычки (')

$message = str_replace('${VM_CIDNUM}', $CallerID , $message); 
+0

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, что уменьшает читаемость кода и объяснений! – Rizier123

1

Попробуйте использовать одиночные кавычки (')

$message = str_replace('${VM_CIDNUM}', $CallerID , $message); 

и заменить "\ п" использование nl2br() PHP функции как

$message = nl2br($message); 
+0

ln2br(), похоже, заменяет реальные новые строки на BR, но в моем случае это не новая строка, а текст «\ n». IE - символ обратной косой черты, за которым следует «n». –

+0

Я решил проблему \ n, выполнив это '$ message = str_replace ('\ n'," \ n ", $ message);' –

0

S реали.

/* SET string variables before set $message */ 

$VM_CIDNAME = $CallerNAME; /* Your CallerNAME variable */ 
$VM_CIDNUM = $CallerID; /* Your CallerID variable */ 
$VM_DATE = $CallerDATE; /* Your CallerDATE variable */ 

/* then */ 
$message = "Hi,\n\nYou have a new voicemail message from ${VM_CIDNAME} (${VM_CIDNUM}), on ${VM_DATE}.\n\nThank you for using 123 Solutions."; 
$message = nl2br($message); 

UPDATE

$VM_CIDNAME = 'John'; 
$VM_CIDNUM = '1234'; 
$VM_DATE = '2017-01-01'; 
$dbRes = $mailboxinfo['emailbody']; 
$ev = '$message = "' . $dbRes . '";'; 
eval($ev); 
$message = nl2br($message); 

без ничего, чтобы заменить

+0

Примечание. Я не устанавливаю $ message таким образом. Он поступает из базы данных, поэтому он устанавливается так: $ mailboxinfo = $ statement-> fetch(); $ message = $ mailboxinfo ['emailbody']; ' –

+0

Я обновляю более простое и интеллектуальное решение –

Смежные вопросы