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

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

Как я могу распечатать перевод строки в сообщении, отправленном ботом?

КОД

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

Сообщение Демо
введите описание изображения здесь

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

38

Решение

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

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

Меня устраивает!

47

Другие решения

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

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

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

3

Я решил проблему следующим образом:

$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

0

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

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

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

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

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

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

    <pre>\n</pre>

то есть.

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

Конечно текст переменная была завитка перед добавлением к URL:

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

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

$message='Hi'
$message=$message."\n";
$message=$message.'Guys'
0
По вопросам рекламы [email protected]