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';
Демонстрация сообщений
![введите описание изображения здесь]()
Любая помощь будет оценена.
Ответы
Ответ 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
Чтобы избежать проблем с кодированием и кодированием, я использовал это простое решение в своем коде:
т.
... 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 должны быть в двойных кавычках.