"\n"
および"\r\n"
は、テレグラムボットによって送信されるテキストメッセージでテストされ、改行を作成します。改行を表示する代わりに、使用後に下線_
が表示されます。
ボットから送信された電報メッセージに改行を印刷するにはどうすればよいですか?
CODE
$txt = 'با تشکر از عضویت شما، هر روز حدود ساعت 10 شب یک ویدئوی جالب برای شما ارسال خواهد شد.';
$txt .= " \n ";
$txt .= 'Thanks for joining, Every day at almost 18:30 GMT an intersting video will be sent';
任意の助けをいただければ幸いです。
もっと良い方法があります!問題はURLエンコードのためです... \n
を使用して通常のPHPテキストを使用できますが、次のようにurlencode
メソッドに渡すことで:
$txt = urlencode("here is my text.\n and this is a new line \n another new line");
わたしにはできる!
1)Windows/Linux OSでコードを開発する場合は、単にテキストでEnterを使用できます。
$text = 'test 123
another text';
それで全部です!
2)コードをWindows/Linuxサーバーで実行する場合、PHP_EOL
の代わりに\n
定数を使用できます。
$text = 'text 123 '.PHP_EOL.'yet another text';
3)また、OSに依存しないソースを検索する場合、この目的で%0A
またはchr(10)
を使用できます。
$text = 'text 123 '.chr(10).'yet another text';
将来の訪問者のために、コメントで@Dagonの回答を引用します:
%0A
を使用すると、電報メッセージに改行が挿入されます
ペルシャ語のようなユニコード言語で望んでいるように結果が表示されないかもしれません!テキストを準備してこれを使用できます。
$txt = implode("\n", explode('\n', $txt));
この問題を解決するには、urlencodeを使用する必要があります。
$text ="sth sth
sth sth";
$text = urlencode($text);
これらの答えはすべて、「正しい」と同時に「間違っている」ものです。実際、あなたが持っている入力の多くに依存しています。たとえば、入力用のテキスト領域があり、コンテンツをTelegramに送信する場合、ユーザーがテキスト領域に書き込み、returnキーを押すと、Telegramのテキストは
hello\neverybody
ではなく
hello
everybody
URLエンコードを実行しても何も変わりません。多くの苦労の末、テキストエリアデータをページから別のページに送信してデータをエスケープするという事実との競合を発見しました。
私が解決する方法は、エスケープされた\ nをエスケープされていないものに置き換えることです。そう:
$my_msg = str_replace("\\n","\n",$my_msg);
テキスト領域のテキストを使用して、Mac、PCなどで動作します。
これらの答えをすべて読んで試した後、自分のソリューションを投稿したかっただけです。 Laravel 5.8には、電子メールと電報メッセージの両方で予約を送信するアプリケーションがあります。
$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,
]);
多かれ少なかれ、Telegram APIが許可するすべてのhtmlタグを使用しました。注意してください\ nは二重引用符で囲む必要があります。
コーディングとエンコードの問題を回避するために、コードで次の簡単なソリューションを使用しました。
Then、各改行に次のコードを挿入します。
<pre>\n</pre>
すなわち。
... sendMessage?parse_mode=HTML&text="... paragraph1<pre>\n</pre>paragraph2 ..."
もちろん、text変数は、URLに追加される前にcurlエスケープされました:
$text = curl_escape($handle, $text);
私にとってこの解決策は機能します:二重引用符を使用します
$message='Hi'
$message=$message."\n";
$message=$message.'Guys'
この方法で問題を解決しました:
$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