PHP: Telegram Bot: Zeilenumbruch in Textnachricht einfügen
Lesezeit: 4 Minuten
Hossein Shahsahebi
"\n" und "\r\n", getestet in einer per Telegramm-Bot gesendeten Textnachricht, um einen Zeilenumbruch zu erstellen. Statt Zeilenumbruch anzuzeigen, unterstreichen _ wird nach der Verwendung angezeigt.
Wie kann ich Zeilenvorschübe in Telegrammnachrichten drucken, die vom Bot gesendet werden?
CODE
$txt="با تشکر از عضویت شما، هر روز حدود ساعت 10 شب یک ویدئوی جالب برای شما ارسال خواهد شد.";
$txt .= " \n ";
$txt .= 'Thanks for joining, Every day at almost 18:30 GMT an intersting video will be sent';
Nachrichten-Demo
Jede Hilfe wird geschätzt.
@Dagon vielen Dank, zuerst dupliziere einfach die Nachricht und drucke sie zweimal, aber der zweite erledigt die Arbeit. Darf ich fragen, wo die Quelle dieser Codes ist?
eine einfache \n funktionieren sollte, ist es möglich, dass der von Ihnen verwendete Bot-Manager vor dem Senden der Nachricht einige Aufräumarbeiten durchführt. Ich verwende nodejs und \n funktioniert prima.
– Exlord
14. Dezember 2016 um 11:04 Uhr
Majid
Es gibt einen besseren Weg! Das Problem liegt an URL-Codierungen … Sie können normalen PHP-Text verwenden \n sondern durch Weitergabe an urlencode Methode wie folgt:
$txt = urlencode("here is my text.\n and this is a new line \n another new line");
Für mich geht das!
Tut mir leid, Majid, jetzt teste ich eine andere Antwort und alle Optionen sind fehlgeschlagen, also deaktiviere ich seine Antwort und überprüfe deine
– Hossein Shahsahebi
16. August 2015 um 18:56 Uhr
urlencode funktioniert bei mir nicht (es codiert alles, einschließlich Leerzeichen). Wenn Sie wie ich einfache Anführungszeichen verwenden, muss \n in doppelte Anführungszeichen gesetzt werden: $text = ‘ my text’ . “\n”;
– Quentin Campbell
5. Dezember 2018 um 15:40 Uhr
علیرضا
1) Wenn Sie Ihren Code in Windows/Linux OS entwickeln, können Sie einfach Text eingeben:
$text="test 123
another text";
Das ist alles!
2) Wenn Ihr Code auf einem Windows/Linux-Server ausgeführt wird, können Sie verwenden PHP_EOL konstant statt \n:
$text="text 123 ".PHP_EOL.'yet another text';
3) Und wenn Sie nach einer OS-unabhängigen Lösung suchen, können Sie verwenden %0A oder chr(10) für diesen Zweck:
$text="text 123 ".chr(10).'yet another text';
@Majid, weil du auf dem Mac bist! in iOS, die PHP_EOL und Zeilenumbruch, ist gleich %0D (oder \r). aber in linux und windows, die PHP_EOL und Zeilenumbruch ist gleich %0A (oder \n) UND %0D%0A (oder \r\n).
– علیرضا
14. August 2015 um 3:22 Uhr
@Majid ich füge einen dritten Weg für dich hinzu 🙂
– علیرضا
14. August 2015 um 3:33 Uhr
Vielen Dank für die Berücksichtigung des Problems. Ich arbeite auf einem Mac, aber der Server, auf dem die PHP-Codes ausgeführt werden, ist ein Linux-Server im Internet! Wie auch immer, danke für das Hinzufügen des dritten Weges 🙂
– Majid
15. August 2015 um 2:02 Uhr
Für zukünftige Besucher zitiere ich nur die Antwort von @Dagon in den Kommentaren:
Verwenden %0A wird Zeilenvorschub in Telegrammnachrichten machen
Dies sollte die akzeptierte Antwort sein. Das urlencode Funktion ist nicht sprachunabhängig. Ihre Lösung funktioniert bei Verwendung der Telegramm-API in jeder Umgebung oder Sprache.
– Dawson B
3. November 2020 um 23:39 Uhr
Nachdem ich all diese Antworten gelesen und ausprobiert hatte, wollte ich nur meine eigene Lösung posten. Ich habe eine Anwendung in Laravel 5.8, die die Reservierung sowohl per E-Mail als auch per Telegrammnachricht sendet.
Ich habe mehr oder weniger alle HTML-Tags verwendet, die die Telegram-API zulässt. Sie sollten darauf achten, dass \n in doppelte Anführungszeichen gesetzt werden muss.
Sie können %0A anstelle von \n verwenden.
Payam Aryanfard
In Unicode-Sprachen wie Persisch wird das Ergebnis möglicherweise nicht wie gewünscht angezeigt! Sie können Ihren Text vorbereiten und verwenden:
$txt = implode("\n", explode('\n', $txt));
Hassan AFIF
Um Codierungs- und Codierungsprobleme zu vermeiden, habe ich diese einfache Lösung in meinem Code verwendet:
Zuerstsende ich meine Textnachricht im HTML-Format, indem ich die parse_mode=HTML -Argument in der URL „sendMessage“.
Dannfüge ich für jeden Zeilenumbruch folgenden Code ein:
@Dagon vielen Dank, zuerst dupliziere einfach die Nachricht und drucke sie zweimal, aber der zweite erledigt die Arbeit. Darf ich fragen, wo die Quelle dieser Codes ist?
– Hossein Shahsahebi
9. August 2015 um 20:56 Uhr
Der erste Google-Treffer war für mich: twilio.com/help/faq/sms/…
– Benutzer557846
9. August 2015 um 20:58 Uhr
eine einfache
\n
funktionieren sollte, ist es möglich, dass der von Ihnen verwendete Bot-Manager vor dem Senden der Nachricht einige Aufräumarbeiten durchführt. Ich verwende nodejs und\n
funktioniert prima.– Exlord
14. Dezember 2016 um 11:04 Uhr