"\n"
和"\r\n"
,在电报机器人发送的短信中进行测试,以创建换行符。使用它们后,将显示下划线_
,而不是显示换行符。
如何在机器人发送的电报信息中打印换行?
代码
$txt = 'با تشکر از عضویت شما، هر روز حدود ساعت 10 شب یک ویدئوی جالب برای شما ارسال خواهد شد.';
$txt .= " \n ";
$txt .= 'Thanks for joining, Every day at almost 18:30 GMT an intersting video will be sent';
任何帮助将不胜感激。
答案 0 :(得分:50)
有更好的方法!问题是因为URL编码...
您可以使用\n
使用普通的PHP文本,但将其传递给urlencode
方法,如下所示:
$txt = urlencode("here is my text.\n and this is a new line \n another new line");
对我有用!
答案 1 :(得分:31)
1)如果您在Windows / Linux操作系统中开发代码,只需使用输入文字:
$text = 'test 123
another text';
多数民众赞成!
2)如果您的代码在Windows / Linux服务器上运行,则可以使用PHP_EOL
常量而不是\n
:
$text = 'text 123 '.PHP_EOL.'yet another text';
3)如果您搜索独立于操作系统的解决方案,则可以使用%0A
或chr(10)
来实现此目的:
$text = 'text 123 '.chr(10).'yet another text';
答案 2 :(得分:7)
对于未来的访问者,我在评论中引用@Dagon答案:
使用%0A
将在电报信息中进行换行
答案 3 :(得分:0)
我用这种方式解决了问题:
$txt = 'aaaaaaaaa\nnew line1 \nnewline2';
$parameters = array('chat_id' => $chatId, "text" => $txt);
$parameters["method"] = "sendMessage";
echo json_encode($parameters);
答案 4 :(得分:0)
你应该使用urlencode来解决这个问题:
$text ="sth sth
sth sth";
$text = urlencode($text);
答案 5 :(得分:0)
它可能不像你想要的那样在波斯语等Unicode语言中显示结果! 您可以准备文本并使用它:
$txt = implode("\n", explode('\n', $txt));
答案 6 :(得分:0)
为避免编码和编码问题,我在代码中使用了这个简单的解决方案:
然后,我为每个换行插入以下代码:
<pre>\n</pre>
即
... sendMessage?parse_mode=HTML&text="... paragraph1<pre>\n</pre>paragraph2 ..."
当然 text 变量在附加到网址之前进行了卷曲转义:
$text = curl_escape($handle, $text);
答案 7 :(得分:0)
对我来说,此解决方案有效: 使用双引号
$message='Hi'
$message=$message."\n";
$message=$message.'Guys'
答案 8 :(得分:0)
所有这些答案同时是“正确”和“错误”。实际上,取决于您拥有的很多输入。例如,如果您有一个文本区域供输入,然后将内容发送给Telegram,如果用户在文本区域中书写并按回车键,则Telegram中的文本将为
hello\neverybody
不是
hello
everybody
执行URL编码不会改变任何内容。经过很多努力后,我发现与将文本区域数据从页面发送到另一页面这一事实发生冲突,从而逃脱了一些数据。
我解决的方法是用一个未转义的\ n替换转义的\ n。 所以:
$my_msg = str_replace("\\n","\n",$my_msg);
它可以在Mac,PC等设备上使用文本区域中的文本。
答案 9 :(得分:0)
阅读并尝试了所有这些答案之后,我只想发布自己的解决方案。我在Laravel 5.8中有一个应用程序,可以通过电子邮件和电报消息发送预订。
$telegramMessage =
"<strong>Reservation Request</strong>\n".
'<strong>Name:</strong> ' . $reservation->reserv_name . "\n".
'<strong>E-mail:</strong> <a href="mailto:' . $reservation->email . '"> ' . $reservation->email . "</a>\n".
'<strong>Phone:</strong> ' . $reservation->phone . "\n".
'<strong>Reservation Date/Time:</strong> ' . $reservation->reserv_date_time->format('d-m-Y H:i') . "\n".
'<strong>Number of people:</strong> ' . $reservation->number_of_people . "\n".
'<strong>Message:</strong> ' . $reservation->reserv_message . "\n";
Telegram::sendMessage([
'chat_id' => env('TELEGRAM_CHAT_ID', ''),
'parse_mode' => 'HTML',
'text' => $telegramMessage,
]);
我或多或少地使用了Telegram API允许的所有html标签。您应该注意\ n必须用双引号引起来。
答案 10 :(得分:0)
您可以使用%0A代替\ n。
答案 11 :(得分:0)
尝试这样的事情,它对我有用,您需要添加参数 parse_mode。
$text = "exampletest \n example"
或类似的东西:
$text1 = 'example';
$text2 = 'next';
$data = $text1 . "\n" . $text2;