可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
"\n"
and "\r\n"
, tested in text message sent by telegram bot, to create line break. Instead of showing line break, underline _
will appear after using them.
How I could printing line feed in telegram message sent by bot?
CODE
$txt = 'با تشکر از عضویت شما، هر روز حدود ساعت 10 شب یک ویدئوی جالب برای شما ارسال خواهد شد.';
$txt .= " \n ";
$txt .= 'Thanks for joining, Every day at almost 18:30 GMT an intersting video will be sent';
Message Demo
Any help will be appreciated.
回答1:
There is a better way! The problem is because of URL encodings...
You can use normal PHP text using \n
but by passing it to urlencode
method, as follows:
$txt = urlencode("here is my text.\n and this is a new line \n another new line");
It works for me!
回答2:
1) If you develop your code in Windows/Linux OS, you can simply use enter in text:
$text = 'test 123
another text';
Thats all!
2) If your code run on Windows/Linux server, you can use PHP_EOL
constant instead of \n
:
$text = 'text 123 '.PHP_EOL.'yet another text';
3) And if you search for an OS independent soloution, you can use %0A
or chr(10)
for this purpose:
$text = 'text 123 '.chr(10).'yet another text';
回答3:
For future visitor just I quote @Dagon answer in comments:
Using %0A
will make line feed in telegram messages
回答4:
I solved the problem in this way :
$txt = 'aaaaaaaaa\nnew line1 \nnewline2';
$parameters = array('chat_id' => $chatId, "text" => $txt);
$parameters["method"] = "sendMessage";
echo json_encode($parameters);
try here : https://telegram-bot-sdk.readme.io/docs/sendmessage
回答5:
you should use urlencode to solve this problem:
$text ="sth sth
sth sth";
$text = urlencode($text);
回答6:
it may be not show result as you wants in Unicode languages like Persian!
you can prepare your text and use this:
$txt = implode("\n", explode('\n', $txt));
回答7:
To avoid coding and encoding issues, I used this simple solution in my code:
ie.
... sendMessage?parse_mode=HTML&text="... paragraph1<pre>\n</pre>paragraph2 ..."
Of course the text variable was curl escaped before appended to the URL:
$text = curl_escape($handle, $text);
回答8:
for me this solution works:
use double quotation mark
$message='Hi'
$message=$message."\n";
$message=$message.'Guys'
回答9:
All these answers are at the same time "right" and "wrong". In fact in depend a lot of the input you have. For example if you have a text area for input and then send the content to Telegram, if the user write in the text area and press return, the text in Telegram will be
hello\neverybody
and not
hello
everybody
Performing URL encode will change nothing. After struggling a lot I discover a conflict with the fact sending the text area data from a page to another page escape some data.
The way I solve that is to remplace the escaped \n by a non-escaped one.
So:
$my_msg = str_replace("\\n","\n",$my_msg);
It works on Mac, PC and so on with text from text area.