在PHP字符串中如何创建回车?

25
我们为我们的计费系统编写了一个小型PHP Hook,当订单被下单时,它会与我们打开一个新的支持票据。它可以正常工作,但是对于“Open Ticket” API函数,它需要一个字符串作为消息,但我们无法弄清如何在其中插入换行符。
我已经尝试过:
<p>, <br>, \n, \r\n, etc.

虽然它似乎只是完全的纯文本,但所有这些都只是被逐字阅读而不是变成换行符。

有人对如何做到这一点有什么想法吗? http://docs.whmcs.com/API:Open_Ticket


2
回车符(CR)仅为 "\r"。我想你的意思是换行符。 - Alvin Wong
请注意,回车符 CR 和换行符 NLHTML换行符 不同。 - Mahdi
我不熟悉 WHMCS,但您使用的是哪种引号?单引号还是双引号?在标准 PHP 中,像 '\n' 这样的单引号字符串将原样呈现 \n。双引号字符串 "\n" 将解析为换行符。 - Decent Dabbler
6个回答

51
Carriage return是"\r"。注意双引号!顺便提一下,如果你想在文本中换行以便在不同操作系统中正确呈现,我认为你需要使用"\r\n"。具体来说,Mac使用\r、Linux/Unix使用\n、Windows使用\r\n。

我在使用PHP创建HTML电子邮件时遇到了问题。结果发现是引号使用的问题(电子邮件标题需要使用“而不是'来定义)。这个答案解决了我的问题:D谢谢。 - Tom Groentjes
请注意,只有Mac OS 9(自2002年起不再受支持)及更早版本使用\r作为换行符。Mac OS X是UNIX的一个变种,同样使用\n(0x0A)作为系统换行符(与其他系统一样,在某些特殊情况下仍会使用它,例如在输出到终端时将插入符位置重置为行首)。 - Synexis
1
对于几年后阅读此内容的其他人,上述代码仅在完全按照示例中的方式即用双引号时才有效。例如,'\r'是无效的,而"\r"是有效的。 - user743873

15

PHP_EOL 返回一个字符串,该字符串对应于平台上的换行符(LF, \n 或 Unix 上的 #10, CRLF, \n\r 或 Windows 上的 #13#10)。

echo "Hello World".PHP_EOL;

绝对传奇 - hallodom
我已经有一段时间没有从事前端编码了,而且老年人的大脑也想不起来这个。谢谢。 - StephenFeather
好久没写前端代码了,老实说,我这颗老脑袋真是记不住这个了。谢谢你。 - StephenFeather

14

3
我发现添加<br>可以实现所需效果。

是的。我继续对PHP在格式化和输出文本方面的困难感到惊讶,特别是在开发过程中。我意识到我不经常使用PHP,但是... - tim.rohrer

3
$postfields["message"] = "This is a sample ticket opened by the API\rwith a carriage return";

2

PHP 片段(在控制台 Cloud9 中):

echo "\n";
echo "1: first_srt=1\nsecnd_srt=2\n";
echo "\n";
echo '2: first_srt=1\nsecnd_srt=2\n';
echo "\n";
echo "==============\n";
echo "\n";

生成的输出:

  1: first_srt=1
  secnd_srt=2

  2: first_srt=1\nsecnd_srt=2\n
  ==============

1和2之间的区别:使用"'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接