Подтвердить что ты не робот

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

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

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

КОД

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

$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

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

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

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

    <pre>\n</pre>

т.

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

Конечно, переменная text была скручена, а затем добавлена ​​к URL-адресу:

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

Ответ 8

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

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

Ответ 9

Все эти ответы являются одновременно "правильными" и "неправильными". На самом деле, многое зависит от того, что у вас есть. Например, если у вас есть текстовая область для ввода, а затем отправьте содержимое в Telegram, если пользователь введет текст в текстовую область и нажмет клавишу возврата, текст в Telegram будет

       hello\neverybody 

и не

       hello
       everybody

Выполнение кодирования URL ничего не изменит. После долгих попыток я обнаружил конфликт с тем фактом, что отправка данных текстовой области со страницы на другую страницу ускользает от некоторых данных.

Способ, который я решаю, состоит в том, чтобы заменить замененный \n на неэкранированный. Так:

      $my_msg = str_replace("\\n","\n",$my_msg);

Он работает на Mac, ПК и так далее с текстом из текстовой области.

Ответ 10

Используйте это: используйте %0A вместо \n

Ответ 11

Прочитав и попробовав все эти ответы, я просто хотел опубликовать свое собственное решение. У меня есть приложение, которое отправляет бронирование как по электронной почте, так и в сообщении Telegram.

$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,
        ]);

Более или менее я использовал все html-теги, которые позволяет Telegram API. Вы должны обратить внимание \n должны быть в двойных кавычках.