我有一个发送网站电子邮件的功能(使用phpmailer),我想要做的基本上是用php替换email.tpl文件中的所有placheholders,其中包含我提供的内容.对我来说问题是我不想重复代码因此我创建了一个函数(下面).
没有php函数,我会在脚本中执行以下操作
// email template file
$email_template = "email.tpl";
// Get contact form template from file
$message = file_get_contents($email_template);
// Replace place holders in email template
$message = str_replace("[{USERNAME}]", $username, $message);
$message = str_replace("[{EMAIL}]", $email, $message);
Run Code Online (Sandbox Code Playgroud)
现在我知道如何做其余的但是我被困在str_replace()上面,如上所示,我有多个str_replace()函数来替换电子邮件模板中的占位符.我想要的是添加str_replace()到我的函数(下面)并让它找到[\]我给它的电子邮件模板中的所有实例,并将其替换为我将给它的占位符值,如下所示:str_replace("[\]", 'replace_with', $email_body)
问题是我不知道如何将多个占位符及其替换值传递给我的函数,并让我str_replace("[{\}]", 'replace_with', $email_body)处理我给它的所有占位符并替换相应的值.
因为我想在多个地方使用该函数并避免重复代码,在某些脚本上我可能会传递函数5占位符和值,而另一个脚本可能需要传递10个占位符和值,以便在电子邮件模板中使用该函数.
我不确定是否需要在将使用该函数的脚本上使用一个数组,并且函数中的for循环可能使我的php函数从脚本中获取xx占位符和xx值并且循环占位符并用值替换它们.
这是我上面提到的功能.我对脚本进行了评论,这可能更容易解释.
// WILL NEED TO PASS PERHAPS AN ARRAY OF MY PLACEHOLDERS AND THERE VALUES FROM x SCRIPT
// INTO THE FUNCTION ? …Run Code Online (Sandbox Code Playgroud) 直到第13个字符被击中为止.一旦str_ireplace在cyper数组中命中"a",str_ireplace就会停止工作.
数组的大小是否有限制?请记住,如果键入"abgf",我会得到"nots",但如果我输入"abgrf",当我得到"注释"时,我会得到"notrs".我的大脑无法弄明白.
$_cypher = array("n","o","p","q","r","s","t","u","v","w","x","y","z","a","b","c","d","e","f","g","h","i","j","k","l","m");
$_needle = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
$_decryptedText = str_ireplace($_cypher, $_needle, $_text);
echo $_decryptedText;
Run Code Online (Sandbox Code Playgroud)
救命?
说我有这个HTML:
<html>
<head>
<title>Hello [[USER_FIRST_NAME]]</title>
</head>
<body>
<p>Hi, [[USER_FIRST_NAME]] [[USER_LAST_NAME]]!</p>
<p><a href="mailto:[[USER_EMAIL]]">[[USER_EMAIL]]</a></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我需要preg_replace所有[[FOOBAR]]带有价值观的代币.
最终结果:
<html>
<head>
<title>Hello John</title>
</head>
<body>
<p>Hi, John Smith!</p>
<p><a href="mailto:john@smith.com">john@smith.com</a></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)