我今天编写了一个脚本,用于格式化我的表单中的HTML电子邮件中的文本。在我输入电子邮件的邮件正文的地方,我使用了textarea。我一整天都在努力弄清楚当我按下enter
替换textarea中的新行时,如何将其添加到电子邮件中。
到目前为止,我已尝试str_replace()
,preg_replace()
和nl2br()
。
我甚至将所有三个组合成一个代码,但这甚至没有效果。
有人可以告诉我为什么当我的textareas有换行符时,我的电子邮件中没有收到任何<br>
个标签吗?
PHP代码:
function replaceText($msg) {
$replaceableText = array(
// Emoticons to replace //
'xD' => '<img src="emoticons/devil.png" height="18" width="18">',
'>:)' => '<img src="emoticons/devil.png" height="18" width="18">',
'x(' => '<img src="emoticons/angry.png" height="18" width="18">',
':((' => '<img src="emoticons/cry.png" height="18" width="18">',
':*' => '<img src="emoticons/kiss.png" height="18" width="18">',
':))' => '<img src="emoticons/laugh.png" height="18" width="18">',
':D' => '<img src="emoticons/laugh.png" height="18" width="18">',
':-D' => '<img src="emoticons/laugh.png" height="18" width="18">',
':x' => '<img src="emoticons/love.png" height="18" width="18">',
'(:|' => '<img src="emoticons/sleepy.png" height="18" width="18">',
':)' => '<img src="emoticons/smile.png" height="18" width="18">',
':-)' => '<img src="emoticons/smile.png" height="18" width="18">',
':(' => '<img src="emoticons/sad.png" height="18" width="18">',
':-(' => '<img src="emoticons/sad.png" height="18" width="18">',
';)' => '<img src="emoticons/wink.png" height="18" width="18">',
';-)' => '<img src="emoticons/wink.png" height="18" width="18">',
// Line breaks to replace //
'\n' => '<br>',
'\r' => '<br>',
'\r\n' => '<br>',
'\n\r' => '<br>',
PHP_EOL => '<br>',
// Filter negative words //
'badword1' => '********',
'badword2' => '********',
// HTML to convert to HTML with inline styles //
'<h1>' => '<h1 style="color: #fff;">'
);
foreach($replaceableText as $replace => $replacedWith) {
$msg = str_replace($replace, $replacedWith, $msg);
}
$msg = preg_replace( "/\r|\n/", "", $msg );
$msg = nl2br($msg);
return $msg;
}
请注意,如果可能的话,我希望保持尽可能接近我的脚本。正如您所看到的,我正在使用它来替换很多东西,这很容易使用。
这只是一个测试脚本,因此我要替换的每一段数据都尚未输入。
由于
答案 0 :(得分:1)
用数组中的双引号(“)替换单引号(')。
$replaceableText = array(
// Emoticons to replace //
"xD" => '<img src="emoticons/devil.png" height="18" width="18">',
">:)" => '<img src="emoticons/devil.png" height="18" width="18">',
"x(" => '<img src="emoticons/angry.png" height="18" width="18">',
":((" => '<img src="emoticons/cry.png" height="18" width="18">',
":*" => '<img src="emoticons/kiss.png" height="18" width="18">',
":))" => '<img src="emoticons/laugh.png" height="18" width="18">',
":D" => '<img src="emoticons/laugh.png" height="18" width="18">',
":-D" => '<img src="emoticons/laugh.png" height="18" width="18">',
":x" => '<img src="emoticons/love.png" height="18" width="18">',
"(:|" => '<img src="emoticons/sleepy.png" height="18" width="18">',
":)" => '<img src="emoticons/smile.png" height="18" width="18">',
":-)" => '<img src="emoticons/smile.png" height="18" width="18">',
":(" => '<img src="emoticons/sad.png" height="18" width="18">',
":-(" => '<img src="emoticons/sad.png" height="18" width="18">',
";)" => '<img src="emoticons/wink.png" height="18" width="18">',
";-)" => '<img src="emoticons/wink.png" height="18" width="18">',
// Line breaks to replace //
"\n" => '<br>',
"\r" => '<br>',
"\r\n" => '<br>',
"\n\r" => '<br>',
PHP_EOL => '<br>',
// Filter negative words //
"badword1" => '********',
"badword2" => '********',
// HTML to convert to HTML with inline styles //
"<h1>" => '<h1 style="color: #fff;">'
);
我之前遇到过同样的问题。单引号的新行(\ n)不起作用,但双引号。