我的問題基本上是否我嘗試做甚至可能。我要麼做的不對,要麼我做的太大了......(插入不專業的php設計師免責聲明)。使用str_replace()(全部包含在函數中)調用PHP函數的替代方法(或正確方法)是什麼?
我正在創建一個自動發送電子郵件系統。我將電子郵件的佈局存儲在文本文件中。我希望被動態編寫的信息由我所稱的標籤(即[DATE],[CUSTNAME],[MESSAGE] ...)表示。
當創建併發送電子郵件時,變量會從我的索引頁傳遞給一個函數,我只是簡單地包含文本文件,而用動態內容替換我的標籤。這對我來說非常合適,直到我想加強通訊中的內容爲止。現在我想添加一個從獨立函數調用的部分。這導致我的電子郵件功能實際上顯示來自被調用函數的內容3次,而不是完成拍攝電子郵件和根據需要重定向的功能。
我的代碼(包含一個函數內)更新(爲我工作)之前:在更新後
$EmailBodyTEXT = addslashes($EmailBody);
$EmailBody =
str_replace('[YEAR]', date(Y),
str_replace('[SUBJECT]', $EmailSubject,
str_replace('[DATE]', date('l, F j, Y'),
str_replace('[MESSAGE]', $EmailBody, file_get_contents($url . 'newsletter_BLANK.txt')))));
我的代碼(失敗):
$EmailBodyTEXT = addslashes($EmailBody);
$EmailBody =
str_replace('[YEAR]', date(Y),
str_replace('[SUBJECT]', $EmailSubject,
str_replace('[DATE]', date('l, F j, Y'),
str_replace('[MESSAGE]', $EmailBody,
str_replace('[PHOTOSTREAM]', PhotoStream(CUST), file_get_contents($url . 'newsletter_BLANK.txt'))))));
對於什麼是值得的,我試過將'第二個函數'加載到$變量中,並將該函數調用替換爲完全相同的結果,如我所料。
我應該如何調用這個函數來當場不「執行」,而是繼續執行包含函數的過程,該過程會在創建和交付過程中將這些內容傳遞到電子郵件中?我只是不正確的想法有一種方法來從str_replace進程加載函數?有沒有更明顯的方式來嘗試做到這一點(基本上是一個郵件合併)功能?
請讓我知道你的想法,如果我需要更多的代碼。
這裏是照片流():
function PhotoStream($DispTo) {
global $url, $uri, $urp, $locurl;
if(empty($DispTo)) { echo 'unconfigured'; continue; } else {
if($DispTo == 'CUST') { $DispTo = urlencode('$redacted'); } else { $DispTo = '$redacted'; }
}
if($getPics = mysql_query("SELECT pid, px, title FROM photos ORDER BY pubdate DESC LIMIT 6")) {
echo '<fieldset><div id="wrapNL">';
while($gPics = mysql_fetch_array($getPics)) {
$pid = $gPics{'pid'};
$pex = $gPics{'px'};
$ptl = $gPics{'title'};
echo '<div id="pthumbs"><a href="' . $uri . $DispTo . '&PID=' . $pid . $locurl . '">';
echo '<img src="' . $urp . 'uploads/' . $pid . '.' . $pex . '" alt="' . $ptl . '" title="' . $ptl . '">';
echo '</a></div>';
}
echo '</div></fieldset>';
}
}
你的PhotoStream功能是做什麼的?它迴應什麼,或返回? – rickdenhaan
您只需將數組傳遞給'str_replace'的第一個和第二個參數,而不是鏈接'str_replace'調用。例如:'str_replace(array('[YEAR]','[SUBJECT]'),數組(日期('Y'),$ EmailSubject),$ EmailBody)''。 – ccKep
我添加了PhotoStream()。它確實回聲。 – BJC