2017-02-01 4 views
1

Ich habe die folgende Zeichenfolge, die aus einer Datenbank in $ Nachricht geladen wurde.str_replace Funktion ersetzen Platzhalter

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

Ich versuche, die Platzhalter in dieser Zeichenfolge mit realen Daten str_replace, aber da PHP $ {} VM_CIDNAME Interpretation wird keinen Ersatz durchgeführt wird.

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

Wie kann ich die Platzhalter ersetzen?

Hinweis: Das Format der Platzhalter zu ändern ist keine Option, da es fest in Software von Drittanbietern codiert ist, die ich nicht ändern kann.

Ich muss auch die "\ n" Zeichen mit Zeilenumbrüchen str_replace.

Vielen Dank

+0

Versuchen ohne '$' Zeichen. Ich denke, es ist eine Variable. also müssen Sie möglicherweise str_replace setzen $ callerId und dann str_replace ('$', '', Text) –

+0

Wenn Sie str_replace verwenden möchten, dann entfernen Sie das Zeichen $ aus der Zeichenfolge, weil $ Zeichen von PHP reserviert ist –

Antwort

1

Sie müssen einfache Anführungszeichen verwenden (')

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

Während dieser Codeausschnitt kann die Frage lösen, [einschließlich einer Erklärung] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich hilft, die Qualität Ihrer Post zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erklärenden Kommentaren zu füllen, dies reduziert die Lesbarkeit sowohl des Codes als auch der Erklärungen! – Rizier123

1

Versuchen Apostroph (')

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

und ersetzen "\ n" Verwendung nl2br() PHP-Funktion als

$message = nl2br($message); 
+0

ln2br() scheint echte neue Zeilen durch BRs zu ersetzen, aber in meinem Fall ist es keine neue Zeile, sondern der Text "\ n". IE der umgekehrte Schrägstrich gefolgt von einem 'n'. –

+0

Ich löste das Problem \ '$ message = str_replace ('\ n'," \ n ", $ Nachricht);' –

0

S implementieren

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

ohne nichts einmal zu ersetzen

+0

Hinweis, ich setze keine $ Nachricht auf diese Weise. Es stammt aus einer Datenbank und wird wie folgt gesetzt: $ mailboxinfo = $ statement-> fetch(); $ message = $ mailboxinfo ['emailbody']; ' –

+0

Ich update mit einfacher und intelligenter Lösung –