2013-08-19 39 views
-1

我試圖用正則表達式PHP變量添加到外部HTML頁面,這樣我可以通過電子郵件是在PHPMailer的

字符串HTML電子郵件我試圖替換爲:

<strong> %temp_pass%% </strong></p><p> 
<a href="http://www.unlimitedtutors.com/forgotpass.php?email=%e%%&p=%myTempPass%%"> 

我正則表達式是:

$hashTempPass = "$2a$10$"; 
$temp_pass = "'=$.hel3332lo\/'"; 
$body = file_get_contents('email/forgot_pass_email.html'); 
$forgot_pass_email = preg_replace('#[0-9A-Za-z.%]temp_pass%%#',$temp_pass, $forgot_pass_email); 
$forgot_pass_email = preg_replace('#[0-9A-Za-z.%]myTempPass%%#',"$2a$10$", $forgot_pass_email); 

的問題是,所有的$和數字符號的被剝離出來的myTempPass %%的,而不是從temp_pas s %% - 它讓我瘋狂 - 我做錯了什麼?這是否與myTempPass在URL中這一事實有關?我怎麼能得到它包括$ /。在更換?

+5

這是做事情的一個非常糟糕的方式,請研究了「忘記密碼」功能,應當執行 –

+1

OK,你獲得1個輸入,4'的preg_replace()'所以哪來的問題呢?你不能只給**一個**輸入**一個**預期輸出嗎? – HamZa

+0

@teresko這種忘記密碼的方法有什麼問題?用戶點擊忘記密碼,我生成一個新的臨時密碼,並將其與URL中的散列傳遞一起發送給他們,當他們點擊它激活的鏈接後,他們登錄並立即更改密碼 - 我沒有看到問題 – Mobaz

回答

1

你兩個字符串

$hashTempPass = "$2a$10$"; 
$temp_pass = "'=$.hel3332lo\/'"; 

被插$2$.作爲變量。您需要使用單引號來避免插值。

$hashTempPass = '$2a$10$'; 
$temp_pass = '\'=$.hel3332lo\/\''; 
+0

即使我使用單引號我仍然沒有得到正確的替代品 - 我得到的是myTemPass的'a2' - 但奇怪的是,$ temp_pass字符串顯示完美無缺 – Mobaz

相關問題