尝试从PHP脚本发送短信消息并换行

27

我一直在尝试从PHP脚本发送的短信中生成新行。我已经使用了\r\n<BR>和一些十六进制代码,但无论我做什么,消息都会没有换行符发送到我的手机。

$body .= 'City:'.$venue.'\r\n'; //<- doesn't work
$body .= 'State:'.$state.'<br>'; //<- doesn't work

这是我的标题类型...(完整标题未包含)

$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

我使用电子邮件发送...

mail($somenumber,$subject,$body,$headers)

在某种意义上,一切都正常,因为我收到了消息。

但我希望我漏掉了什么,因为这让我疯狂。


4
“\r\n”应该是正确的写法。 - bcosca
"\r\n" 打印 __ - Pratik Butani
14个回答

32

使用:%0a,在诺基亚和安卓手机上都可以工作。


26

'\n'会打印出两个字符:\n

"\n"会打印一个换行符(0x0A)


确保代码中使用的是"\r\n"而不是我在示例中使用的'\r\n'。但仍然没有换行。 可能是我的手机问题。 - Matt
三星Galaxy Grand上运行良好。 - sugunan

5

有时候对我来说,%0a有效,有时候\n有效,这取决于短信网关。


1
工作得很好。我认为在使用“get方法”发送消息文本时,我们应该使用“%0a”。 - mostafaznv
"%0a" 对我有效! - Praveen Vishnu

3

使用"\n"代替'\n',因为单引号会将字符原封不动地输出。

例如:

echo nl2br('one \n two');//print: one \n two
echo nl2br("one \n two");//print: one <br> two

2
我也遇到了同样的问题,这是我的解决方案: $text .= chr(10) . 'hello world';
在测试时,其他所有解决方案都没有奏效。翻译成中文即为:
Had same problem, this works for me. $text .= chr(10) . 'hello world';
但是,当我测试时,其他所有的答案都没有起作用。

2

使用\r\n,然后使用urlencode()进行编码。这对Android系统有效。


1

这在php中对我起作用了,

$message = "Welcome,
some text
Thank you for choosing us.";

1
你需要了解如何编码消息以便发送。对于我的情况,使用routosms api,我必须禁用他们api在我的消息字符串上使用urlencode(使用php)。然后,%0A就可以使用了。

0

使用双引号,单引号不识别换行符


0

您正在将内容类型设置为text/html。尝试发送<br/>。HTML是不敏感于空格的,并使用断行标签来强制换行。

如果您不想让消息成为HTML,请不要将其标记为HTML。


是的,我已经尝试过使用 <br> 和 <br/> 标签(<br> 会消失但不会添加换行符,而 <br/> 则在我的消息中显示为 >)。 - Matt
@Matt:那就试试纯文本电子邮件吧。 - Borealid
我已经尝试了,但仍然没有得到新的一行。 - Matt

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