PHP: Telegram Bot: вставить разрыв строки в текстовое сообщение

"n" и "rn", проверено в текстовом сообщении, отправленном ботом telegram, для создания разрыва строки. Вместо того, чтобы показывать разрыв строки, подчеркните _ появляется после их использования.

как я мог печатать ленту в телеграмме, отправленной ботом?

код

$txt = 'با تشکر از عضویت شما، هر روز حدود ساعت 10 شب یک ویدئوی جالب برای شما ارسال خواهد شد.';
$txt .= " n ";
$txt .= 'Thanks for joining, Every day at almost 18:30 GMT an intersting video will be sent';

Сообщение Demo enter image description here

любая помощь будет оценили.

8 ответов


есть способ лучше! Проблема из-за кодировок URL... Вы можете использовать обычный текст PHP, используя \n но, передав его urlencode метод, как показано ниже:

$txt = urlencode("here is my text.\n and this is a new line \n another new line");

это работает для меня!


1) Если вы разрабатываете свой код в ОС Windows/Linux, вы можете просто использовать enter в тексте:

$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';

для будущего посетителя просто цитирую @Dagon ответ в комментариях:

С помощью %0A сделает линию подачи в телеграмме сообщения


Я решил проблему таким образом :

$txt = 'aaaaaaaaa\nnew line1 \nnewline2';
$parameters = array('chat_id' => $chatId, "text" => $txt);

$parameters["method"] = "sendMessage";
echo json_encode($parameters);

попробуйте здесь : https://telegram-bot-sdk.readme.io/docs/sendmessage


вы должны использовать urlencode для решения этой проблемы:

$text ="sth sth
sth sth";
$text = urlencode($text);

это может быть не показать результат, как вы хотите в языках Unicode, таких как персидский! вы можете подготовить свой текст и использовать этот:

$txt = implode("\n", explode('\n', $txt));

чтобы избежать проблем с кодированием и кодированием, я использовал это простое решение в своем коде:

  • первый, я отправляю текстовое сообщение в формате HTML, установив parse_mode=HTML-код аргумент в URL-адресе" sendMessage".
  • затем, я вставляю следующий код для каждой строки:

    <pre>\n</pre>

ie.

... sendMessage?parse_mode=HTML&text="... paragraph1<pre>\n</pre>paragraph2 ..."

конечно текст переменной curl сбежал перед добавлением к URL:

$text = curl_escape($handle, $text);

для меня это решение работает: используйте двойную кавычку

$message='Hi'
$message=$message."\n";
$message=$message.'Guys'