簡體   English   中英

php sprintf HTML模板

[英]php sprintf HTML template

我有html郵件模板,我想通過php mail()函數發送給我的用戶。

我把這個模板放到php變量,並希望使用sprintf()函數插入指定的變量,但我得到這個 -

警告:sprintf():參數太少

在我的HTML模板中

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>template</title> <style type="text/css"> @media screen and (max-width: 600px) { table[class="container"] { width: 95% !important; } } #outlook a { padding: 0; } body { width: 100% !important; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; margin: 0; padding: 0; } .ExternalClass { width: 100%; } .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div { line-height: 100%; } #backgroundTable { margin: 0; padding: 0; width: 100% !important; line-height: 100% !important; } img { outline: none; text-decoration: none; -ms-interpolation-mode: bicubic; } a img { border: none; } .image_fix { display: block; } p { margin: 1em 0; } h1, h2, h3, h4, h5, h6 { color: black !important; } h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { color: blue !important; } h1 a:active, h2 a:active, h3 a:active, h4 a:active, h5 a:active, h6 a:active { color: red !important; } h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited { color: purple !important; } table td { border-collapse: collapse; } table { border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; } a { color: #000; } @media only screen and (max-device-width: 480px) { a[href^="tel"], a[href^="sms"] { text-decoration: none; color: black; /* or whatever your want */ pointer-events: none; cursor: default; } .mobile_link a[href^="tel"], .mobile_link a[href^="sms"] { text-decoration: default; color: orange !important; /* or whatever your want */ pointer-events: auto; cursor: default; } } @media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { a[href^="tel"], a[href^="sms"] { text-decoration: none; color: blue; /* or whatever your want */ pointer-events: none; cursor: default; } .mobile_link a[href^="tel"], .mobile_link a[href^="sms"] { text-decoration: default; color: orange !important; pointer-events: auto; cursor: default; } } @media only screen and (-webkit-min-device-pixel-ratio: 2) { /* Put your iPhone 4g styles in here */ } @media only screen and (-webkit-device-pixel-ratio:.75) { /* Put CSS for low density (ldpi) Android layouts in here */ } @media only screen and (-webkit-device-pixel-ratio:1) { /* Put CSS for medium density (mdpi) Android layouts in here */ } @media only screen and (-webkit-device-pixel-ratio:1.5) { /* Put CSS for high density (hdpi) Android layouts in here */ } /* end Android targeting */ h2 { color: #181818; font-family: Helvetica, Arial, sans-serif; font-size: 22px; line-height: 22px; font-weight: normal; } a.link1 {} a.link2 { color: #fff; text-decoration: none; font-family: Helvetica, Arial, sans-serif; font-size: 16px; color: #fff; border-radius: 4px; } p { color: #555; font-family: Helvetica, Arial, sans-serif; font-size: 16px; line-height: 160%; } </style> <script type="colorScheme" class="swatch active"> { "name":"Default", "bgBody":"ffffff", "link":"fff", "color":"555555", "bgItem":"ffffff", "title":"181818" } </script> </head> <body> <!-- Wrapper/Container Table: Use a wrapper table to control the width and the background color consistently of your email. Use this approach instead of setting attributes on the body tag. --> <table cellpadding="0" width="100%" cellspacing="0" border="0" id="backgroundTable" class='bgBody'> <tr> <td> <table cellpadding="0" width="620" class="container" align="center" cellspacing="0" border="0"> <tr> <td> <!-- Tables are the most common way to format your email consistently. Set your table widths inside cells and in most cases reset cellpadding, cellspacing, and border to zero. Use nested tables as a way to space effectively in your message. --> <table cellpadding="0" cellspacing="0" border="0" align="center" width="600" class="container"> <tr> <td class='movableContentContainer bgItem'> <div class='movableContent'> <table cellpadding="0" cellspacing="0" border="0" align="center" width="600" class="container"> <tr height="40"> <td width="200">&nbsp;</td> <td width="200">&nbsp;</td> <td width="200">&nbsp;</td> </tr> <tr> <td width="200" valign="top">&nbsp;</td> <td width="200" valign="top" align="center"> <div class="contentEditableContainer contentImageEditable"> <div class="contentEditable" align='center'> <img src="images/logo.png" width="155" height="155" alt='Logo' data-default="placeholder" /> </div> </div> </td> <td width="200" valign="top">&nbsp;</td> </tr> <tr height="25"> <td width="200">&nbsp;</td> <td width="200">&nbsp;</td> <td width="200">&nbsp;</td> </tr> </table> </div> <div class='movableContent'> <table cellpadding="0" cellspacing="0" border="0" align="center" width="600" class="container"> <tr> <td width="100%" colspan="3" align="center" style="padding-bottom:10px;padding-top:25px;"> <div class="contentEditableContainer contentTextEditable"> <div class="contentEditable" align='center'> <h2></h2> </div> </div> </td> </tr> <tr> <td width="100">&nbsp;</td> <td width="400" align="center"> <div class="contentEditableContainer contentTextEditable"> <div class="contentEditable" align='left'> <p>Dear , %s <br/> <br/> Thank you for being with us.<br/> This is your registration Information.<br/> login - <br/> Password - <br/> Click on the link below to sign-in your profile. If you're no longer interested in hearing from us, simply click on unsubscribe below (or ignore this message) and we won't send you any more newsletters. </p> </div> </div> </td> <td width="100">&nbsp;</td> </tr> </table> <table cellpadding="0" cellspacing="0" border="0" align="center" width="600" class="container"> <tr> <td width="200">&nbsp;</td> <td width="200" align="center" style="padding-top:25px;"> <table cellpadding="0" cellspacing="0" border="0" align="center" width="200" height="50"> <tr> <td bgcolor="#ED006F" align="center" style="border-radius:4px;" width="200" height="50"> <div class="contentEditableContainer contentTextEditable"> <div class="contentEditable" align='center'> <a target='_blank' href="" class='link2'>Sign-In</a> </div> </div> </td> </tr> </table> </td> <td width="200">&nbsp;</td> </tr> </table> </div> <div class='movableContent'> <table cellpadding="0" cellspacing="0" border="0" align="center" width="600" class="container"> <tr> <td width="100%" colspan="2" style="padding-top:65px;"> <hr style="height:1px;border:none;color:#333;background-color:#ddd;" /> </td> </tr> <tr> <td width="60%" height="70" valign="middle" style="padding-bottom:20px;"> <div class="contentEditableContainer contentTextEditable"> <div class="contentEditable" align='left'> <span style="font-size:13px;color:#181818;font-family:Helvetica, Arial, sans-serif;line-height:200%;">Sent to by LinkedInterests.in</span> <br/> <span style="font-size:13px;color:#181818;font-family:Helvetica, Arial, sans-serif;line-height:200%;"> <!-- <a target='_blank' href="#" style="text-decoration:none;color:#555">Forward to a friend</a>--> </span> <br/> <span style="font-size:13px;color:#181818;font-family:Helvetica, Arial, sans-serif;line-height:200%;"> <a href="#" style="text-decoration:none;color:#555">click here to unsubscribe</a> </span> </div> </div> </td> <td width="40%" height="70" align="right" valign="top" align='right' style="padding-bottom:20px;"> <table width="100%" border="0" cellspacing="0" cellpadding="0" align='right'> <tr> <td width='57%'></td> <td valign="top" width='34'> <div class="contentEditableContainer contentFacebookEditable" style='display:inline;'> <div class="contentEditable"> <img src="" data-default="placeholder" data-max-width='30' data-customIcon="true" width='30' height='30' alt='facebook' style='margin-right:40x;'> </div> </div> </td> <td valign="top" width='34'> <div class="contentEditableContainer contentTwitterEditable" style='display:inline;'> <div class="contentEditable"> <img src="" data-default="placeholder" data-max-width='30' data-customIcon="true" width='30' height='30' alt='twitter' style='margin-right:40x;'> </div> </div> </td> <td valign="top" width='34'> <div class="contentEditableContainer contentImageEditable" style='display:inline;'> <div class="contentEditable"> <a target='_blank' href="#" data-default="placeholder" style="text-decoration:none;"> <img src="" width="30" height="30" data-max-width="30" alt='pinterest' style='margin-right:40x;' /> </a> </div> </div> </td> </tr> </table> </td> </tr> </table> </div> </td> </tr> </table> </td> </tr> </table> </td> </tr> </table> <!-- End of wrapper table --> </body> </html> 

%s僅在第260行

和我的PHP代碼

$to = $validatedData['email'];
$name = $validatedData['name'];

$subject = 'Thank\'s for being with Us';

$message = file_get_contents(ROOT . '/views/newsletters/sign-up.php');
$message = sprintf($message, $name);

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

$headers[] = 'To: ' . $validatedData['name'] . '<' . $to . '>';
$headers[] = 'From: LinkedInterests Support <support@LinkedInterests.in>';                

mail($to, $subject, $message, implode("\r\n", $headers));
$body = file_get_contents('email-template.html');
$patterns = array(
        '/{name}/',
        '/{date}/',
        '/{company}/',
        '/{contact}/',
        '/{email}/',
    );
    $replacements = array(
        $post['name'],
        $post['date'],
        $post['company'],
        $post['contact'],
        $post['email'],
    );
$body = preg_replace($patterns, $replacements, $body);

電子郵件模板應該是這樣的

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Email</title>
</head>

<body>
        <p>
            <b>Hi {name},</b>
            <b>Your {date},</b>
            <b>Your {company},</b>
            <b>Your {contact},</b>
            <b>Your {email},</b>
        </p>
</body>
</html>

你應該轉義%以便printf將它們視為文字( %s除外)。 也許是這樣的:

$message = sprintf(str_replace('%%s','%s, str_replace( '%', '%%', $message) ), $name);

知道你將像sprintf函數中的模板一樣使用它,添加另外%'%'符號的任何地方。 這個過程可能會枯燥乏味,所以有一點替代方案:

$message = sprintf(str_replace('%%s','%s',str_replace('%','%%',$message)), $name);

也許百分號會產生誤解。 您可以嘗試使用:$ message = sprintf(addslashes($ message),$ name);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM