2017-02-01 9 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);

どのように私は、プレースホルダを置き換えることができますか?

注:プレースホルダのフォーマットを変更することは、私が変更できないサードパーティのソフトウェアにハードコードされているため、オプションではありません。

また、改行で「\ n」文字をstr_replaceする必要があります。あなたは

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

( ')単一引用符を使用して試してみて、 "\ n" はnl2br()を使用してPHPの機能を置き換えるために(')

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

を置き換えるために、何もせずに '$'記号なしで一度試してみてください。私はそれを変数とみなしていると思います。 $ str_replace( '$'、 ''、text) –

+0

str_replaceを使いたい場合は、str_replaceをstr_replaceに設定して文字列から$記号を削除する必要があります。$記号はPHPによって予約されています –

答えて

1

as

$message = nl2br($message); 
+0

このコードスニペット[説明を含む](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)という質問を解決することは、あなたの投稿の質を向上させるのに本当に役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。あなたのコードに説明的なコメントを詰め込まないようにしてください。これは、コードと説明の両方の可読性を低下させます! – Rizier123

1

単一引用符を使用する必要があります

感謝

+0

ln2br()は実際の新しい行をBRに置き換えているようですが、私の場合は新しい行ではなく "\ n"という文字列です。 IEはバックスラッシュ文字の後に 'n'を続けます。 –

+0

これを実行して\ n問題を解決しました '$ message = str_replace( '\ n'、" \ n "、$ message);' –

0

実施する。

/* 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

もっとシンプルでスマートなソリューションでアップデートします –

関連する問題