源码如何管理白space和拼接

How does source code manage white space and concatenation

在下面的代码中:

    $email_body = 
       "message from $name \n" 
       "email address $visitor_email \n"
       "\n $message";

第四行由于意外"而产生解析错误,但引号似乎正确配对。那么为什么(最后的?)在最后一行 "unexpected"?

我预计 $email_body 的结果是:

    message from $name
    email address $visitor_email 

    $message

我浏览了 php.net/manual 上的语法页面,并阅读了此处关于单引号和双引号的问题。我找不到在字符串开头换行的任何例外情况,但似乎就是这样。谁能澄清一下?

当我运行它时,错误在第三行,而不是第四行。

这里的问题是你有一个字符串文字紧挨着另一个字符串文字,它们之间没有运算符。

这是错误的:

"foo" "foo" 

原样:

"foo"
"foo"

你可以这样做:

"foo" . "foo"

"foo" . 
"foo"

除非您使用 . 将它们重新连接在一起,否则不要那样分解字符串!

所以,要么:

 $email_body = 
   "message from $name \n 
   email address $visitor_email \n
   \n $message"; // also the whole string on one line is fine

$email_body = 
   "message from $name \n" 
   . "email address $visitor_email \n"
   . "\n $message";

你的错误是

Error on line 5: parse error, unexpected T_CONSTANT_ENCAPSED_STRING("email address $visitor_email \n"

这是你的错误开始的地方

$email_body = 
       "message from $name \n" // This line you need to add concatination
       "email address $visitor_email \n"

那么您的代码将如下所示

 <?php

 $email_body = 
       "message from $name \n". 
       "email address $visitor_email \n".
       "\n $message";