注意:如果这是一个非常简单的问题,我很抱歉,但我对代码的格式有点强迫症。
我有一个类,它有一个函数,它返回一个字符串,该字符串将构成电子邮件的正文文本。我想格式化这个文本,使其在电子邮件中看起来正确,但也不会让我的代码看起来很时髦。我的意思是:
class Something
{
public function getEmailText($vars)
{
$text = 'Hello ' . $vars->name . ",
The second line starts two lines below.
I also don't want any spaces before the new line, so it's butted up against the left side of the screen.";
return $text;
}
}
但它也可以写成:
public function getEmailText($vars)
{
$text = "Hello {$vars->name},\n\rThe second line starts two lines below.\n\rI also don't want any spaces before the new line, so it's butted up against the left side of the screen.";
return $text;
}
但是新行和回车是怎么回事呢?有什么关系呢?\n\n
是\r\r
还是\n\r
的等价物?当我在线之间创建线间距时,我应该使用哪一个?
然后是输出缓冲和heredoc语法的选项。
如何处理在对象中使用长多行字符串?
发布于 2009-12-05 05:10:05
我使用与pix0r类似的系统,我认为这使得代码非常具有可读性。有时,我实际上会用双引号分隔换行符,并对字符串的其余部分使用单引号。这样,如果您使用连接而不是在双引号字符串中注入变量,它们将从其余文本中脱颖而出,并且变量也会更好地脱颖而出。因此,我可能会对您的原始示例执行类似的操作:
$text = 'Hello ' . $vars->name . ','
. "\r\n\r\n"
. 'The second line starts two lines below.'
. "\r\n\r\n"
. 'I also don\'t want any spaces before the new line,'
. ' so it\'s butted up against the left side of the screen.';
return $text;
关于换行符,对于电子邮件,你应该始终使用\r\n。PHP_EOL是用于在运行php的同一操作系统中使用的文件。
发布于 2009-12-05 02:59:38
我对长文本使用模板:
email-template.txt包含
hello {name}!
how are you?
在PHP中,我这样做:
$email = file_get_contents('email-template.txt');
$email = str_replace('{name},', 'Simon', $email);
发布于 2009-12-05 03:01:42
当然,您可以使用HEREDOC,但就代码可读性而言,它并不比第一个示例更好,第一个示例将字符串包装在多行中。
如果你真的想让你的多行字符串看起来很好,并且能和你的代码很好的搭配,我建议你把字符串连接在一起,就像这样:
$text = "Hello, {$vars->name},\r\n\r\n"
. "The second line starts two lines below.\r\n"
. ".. Third line... etc";
这可能比HEREDOC或多行字符串稍慢,但它将与您的代码的缩进很好地流动,并使其更容易阅读。
https://stackoverflow.com/questions/1848945
复制相似问题