正则表达式在一个字符串中剥离$而不是另一个

时间:2013-08-19 17:54:14

标签: php regex

我正在尝试使用正则表达式将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_pass %%中删除 - 它让我发疯 - 我做错了什么?是否与myTempPass在网址中这一事实有关?我怎么能得到它包括$ /。在替换?

1 个答案:

答案 0 :(得分:1)

你的两个字符串

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

$2$.插值为变量。您需要使用单引号来避免插值。

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