首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >最佳实践:在PHP中处理长的多行字符串?

最佳实践:在PHP中处理长的多行字符串?
EN

Stack Overflow用户
提问于 2009-12-05 02:52:47
回答 6查看 216K关注 0票数 185

注意:如果这是一个非常简单的问题,我很抱歉,但我对代码的格式有点强迫症。

我有一个类,它有一个函数,它返回一个字符串,该字符串将构成电子邮件的正文文本。我想格式化这个文本,使其在电子邮件中看起来正确,但也不会让我的代码看起来很时髦。我的意思是:

代码语言:javascript
复制
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;
    }
}

但它也可以写成:

代码语言:javascript
复制
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语法的选项。

如何处理在对象中使用长多行字符串?

EN

回答 6

Stack Overflow用户

发布于 2009-12-05 05:10:05

我使用与pix0r类似的系统,我认为这使得代码非常具有可读性。有时,我实际上会用双引号分隔换行符,并对字符串的其余部分使用单引号。这样,如果您使用连接而不是在双引号字符串中注入变量,它们将从其余文本中脱颖而出,并且变量也会更好地脱颖而出。因此,我可能会对您的原始示例执行类似的操作:

代码语言:javascript
复制
$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的同一操作系统中使用的文件。

票数 45
EN

Stack Overflow用户

发布于 2009-12-05 02:59:38

我对长文本使用模板:

email-template.txt包含

代码语言:javascript
复制
hello {name}!
how are you? 

在PHP中,我这样做:

代码语言:javascript
复制
$email = file_get_contents('email-template.txt');
$email = str_replace('{name},', 'Simon', $email);
票数 25
EN

Stack Overflow用户

发布于 2009-12-05 03:01:42

当然,您可以使用HEREDOC,但就代码可读性而言,它并不比第一个示例更好,第一个示例将字符串包装在多行中。

如果你真的想让你的多行字符串看起来很好,并且能和你的代码很好的搭配,我建议你把字符串连接在一起,就像这样:

代码语言:javascript
复制
$text = "Hello, {$vars->name},\r\n\r\n"
    . "The second line starts two lines below.\r\n"
    . ".. Third line... etc";

这可能比HEREDOC或多行字符串稍慢,但它将与您的代码的缩进很好地流动,并使其更容易阅读。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1848945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档